2009-09-03 36 views
21

Tôi có một UIButton, và tôi muốn cập nhật tiêu đề của nó, nhưng tôi không muốn phải luôn luôn làm điều đó cho mỗi và mọi trạng thái như sau:Có cách nào để setTitle trên UIButton cập nhật tất cả UIControlStates cùng một lúc không?

[myButton setTitle:@"Play" forState:UIControlStateNormal]; 

[myButton setTitle:@"Play" forState:UIControlStateHighlighted]; 

[myButton setTitle:@"Play" forState:UIControlStateSelected]; 

Có cách nào tốt hơn?

Trả lời

55

Theo tài liệu bạn chỉ nên cần phải gọi:

[myButton setTitle:@"Play" forState:UIControlStateNormal]; 

Các tài liệu UIButton giải thích tại sao:

Nói chung, nếu một tài sản không được chỉ định cho một nhà nước, mặc định là để sử dụng giá trị UIControlStateNormal. Nếu giá trị cho UIControlStateNormal không được đặt, thì thuộc tính mặc định là giá trị hệ thống. Do đó, ở mức tối thiểu, bạn nên đặt giá trị cho trạng thái bình thường.

Cụ thể, nếu bạn chỉ đặt giá trị bình thường, các trạng thái khác sẽ tham chiếu đến nó khi được đặt.

6

hoặc bạn có thể setTitle bởi:

[myButton setTitle:@"Play" forState:UIControlStateNormal|UIControlStateHighlighted|UIControlStateSelected]; 
+0

Tại sao bạn sẽ muốn làm điều đó theo cách này? – auspicious99

+0

để thiết lập tiêu đề của nút nhiều trạng thái trong một dòng. –

+0

Đó là cách chính xác cho tất cả các điều khiển. UI Slider không thay đổi ở tất cả các tiểu bang. hữu ích – Saad

0

Bạn có thể tạo ra một loại cho UIButton:

@implementation UIButton (Addition) 
-(void)setTitleForAllStates:(NSString *)title { 
    //you can add/remove this area : UIControlStateApplication, UIControlStateDisabled, UIControlStateReserved 
    [self setTitle:title forState:UIControlStateNormal]; 
    [self setTitle:title forState:UIControlStateSelected]; 
    [self setTitle:title forState:UIControlStateHighlighted]; 
} 
@end 
Các vấn đề liên quan