2012-06-21 38 views
29

Tôi có một số UIButton cần có 2 trạng thái - "Phát" và "Tạm dừng"; tức là - ở lần đầu tiên người dùng nhìn thấy nó có nội dung "Phát" và sau đó bất cứ khi nào người dùng nhấp vào, nó sẽ chuyển đổi giữa "Phát" và "Tạm dừng".Làm thế nào để thay đổi thuộc tính textLabel trong UIButton theo lập trình trong iOS?

Tôi đã quản lý để tự tạo bộ điều khiển - nội dung được phát và tạm dừng đúng cách - nhưng dường như tôi không thể thay đổi văn bản Nhãn văn bản UIButton.

tôi sử dụng:

myButton.titleLabel.text = @"Play"; 

myButton.titleLabel.text = @"Pause"; 

Nó không hoạt động. Văn bản không thay đổi. Tôi cũng đã thử [myButton.titleLabel setText: @ "Pause"] và nó cũng không hoạt động.

Tôi làm cách nào để đặt?

Trả lời

66

Nó nên là:

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

Bạn cần phải vượt qua state là tốt. Bạn có thể kiểm tra state của here khác.

Sau đó bạn có thể làm một cái gì đó như thế này:

[myButton setTitle:@"Play" forState:UIControlStateNormal]; 
[myButton setTitle:@"Stop" forState:UIControlStateSelected]; 
1

Và nếu bạn muốn tải nó về tải trang, và hỗ trợ địa phương ngôn ngữ:

-(void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 
    if (self.flagToChangeLabel){ 
     NSString* newBtnTitle = NSLocalizedString(@"LOCALIZED_KEY", nil); 
     [self.laterButton setTitle:newBtnTitle forState:UIControlStateNormal]; 
     [self.laterButton setTitle:newBtnTitle forState:UIControlStateSelected]; 
    } 
} 
2

Tôi thấy điều này là hơi ra khỏi ngày kể từ khi chuỗi được phân bổ đã được thêm vào. Dường như tiêu đề của các nút được gán trong bảng phân cảnh là các chuỗi được gán. Tiêu đề được phân bổ được ưu tiên hơn tiêu đề NSString, vì vậy nếu bạn muốn sử dụng chuỗi đơn giản làm tiêu đề, trước tiên bạn phải xóa tiêu đề được phân bổ. Tôi đã làm như dưới đây, mặc dù có thể có một cách tốt hơn. Bạn có thể, tất nhiên, làm cho tiêu đề mới của bạn cũng là một chuỗi được phân bổ.

[myButton setAttributedTitle: nil  forState: 0xffff]; 
[myButton   setTitle: @"Play" forState: UIControlStateNormal]; 
Các vấn đề liên quan