2012-07-20 23 views
34

Tôi cảm thấy điều này có lẽ là một câu hỏi ngu ngốc ... nhưng dù sao tôi cũng có loại hành vi tiêu đề lạ UIButton này.Thay đổi tiêu đề UIButton thành mặc định

Nút được thiết lập và kết nối với cả hành động và thuộc tính trong IB (hành động là startButtonPushed và thuộc tính là startButton). Bên trong bộ điều khiển xem tôi có những hành động thiết lập như thế này:

bool buttonStateStop; 

- (IBAction)startPushed:(id)sender 
{ 
    if (buttonStateStop) 
    { 
     [appD.locationManager stopSavingLocations]; 
     startButton.titleLabel.text = @"Start"; 
     buttonStateStop = NO; 
    } 
    else 
    { 
     [appD.locationManager startSavingLocations]; 
     startButton.titleLabel.text = @"Stop"; 
     buttonStateStop = YES;   
    } 
} 

Nguyên tôi đã có tiêu đề mặc định trong IB thiết lập để "Start" nhưng mỗi khi tôi nhấn nút nó sẽ thay đổi để "Stop" cho một phần nhỏ của một giây và sau đó trở lại. Tôi đã dành một thời gian cố gắng tìm ra lý do tại sao tiêu đề tiếp tục được đặt trở lại "Bắt đầu". Cuối cùng tôi đã thay đổi tiêu đề IB thành "xxxxxx" và nhận ra rằng không có vấn đề gì, tiêu đề IB được xác nhận lại ngay sau khi tiêu đề của nút thay đổi.

Câu hỏi đặt ra là: tại sao IB tiếp tục thay đổi tiêu đề của nút về mặc định? Tôi chưa bao giờ bắt gặp hành vi này trước đây. Và (rõ ràng) làm thế nào tôi có thể sửa chữa nó?

Thông tin bổ sung: tham chiếu duy nhất cho nút là @property, @synthesize và các câu lệnh trong mã ở trên. Chế độ xem nằm bên trong bộ điều khiển điều hướng.

Trả lời

65

Bạn cần phải sử dụng setTitle:forState: phương pháp thay vì thiết lập titleLabel.text tài sản:

[startButton setTitle:@"Start" forState:UIControlStateNormal]; 
// Normal and highlighted titles do not need to be the same 
[startButton setTitle:@"Start!" forState:UIControlStateHighlighted]; 

gì xảy ra bây giờ là bạn đặt tiêu đề trong nhãn đại diện cho quan điểm của nhà nước hiện nay, nhưng một khi thay đổi trạng thái từ đẩy sang bình thường, nút đặt lại nhãn trở lại tiêu đề cho trạng thái mới (là văn bản bạn đã đặt trong IB).

+0

Bạn nói đúng, đây là vấn đề của tôi. Hành vi rất kỳ quặc, kể từ khi tôi đã làm điều tương tự chính xác mà không gặp bất kỳ rắc rối nào trước đây. – Dustin

+0

Thật kỳ lạ khi nó "đôi khi hoạt động!" vấn đề là trong doco họ đề cập đến bạn thay đổi ** phong cách ** (vv) của văn bản bằng cách sử dụng .titleLabel. Thật là rắc rối! – Fattie

5

Phiên bản nhanh chóng của việc này là

startButton.setTitle("Start", forState: UIControlState.Normal) 
+0

ngay bây giờ 'startButton.setTitle (" Bắt đầu ", cho: .normal)' cho đến khi chúng thay đổi lại – CupawnTae

Các vấn đề liên quan