2012-09-04 28 views
5

Tôi hơi bối rối khi thấy rằng những điều sau đây không hoạt động khi cố gắng thay đổi văn bản hiển thị trên UIButton.Đặt tiêu đềLabel cho UIButton

// 001 
[[[self button] titleLabel] setText:@"Peanuts"]; 

Tôi nghĩ mình biết tại sao, nhưng tôi chỉ muốn xác nhận suy nghĩ của mình ở đây. 001 không đặt thuộc tính văn bản titleLabel, nhưng là thuộc tính văn bản UILabel (xem phụ của UIButton), nó không làm cho giao diện người dùng được vẽ lại. Điều này dẫn đến thay đổi nội bộ đối với thuộc tính văn bản UILabel, nhưng đáng tiếc là không có thay đổi trực quan trong giao diện người dùng.

// 002 
[[self button]setTitle:@"Peanuts" forState:UIControlStateNormal]; 

Có vẻ như rằng phương pháp setTitle: forState là cách chính xác để đi, nó có chi phí thêm đòi hỏi một nhà nước nhưng không gọi một giao diện người dùng vẽ lại bởi vì nó được gọi trực tiếp trên UIButton. Câu hỏi của tôi là, là 002 cách chính xác để làm điều này, nó sẽ có vẻ nó là trừ khi tôi đang làm một cái gì đó hoàn toàn sai?

Trả lời

7

Bạn là chính xác.

[[self button]setTitle:@"Peanuts" forState:UIControlStateNormal]; 

là tiêu đề nút nên được đặt. Điều này cho phép bạn kiểm soát những gì nút của bạn trông giống như trong tất cả các trạng thái điều khiển khác nhau của nó.

Từ các tài liệu:

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 là .

+0

Cảm ơn bạn, được đánh giá cao. – fuzzygoat

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