Tôi đang phân lớp NSButtonCell để tùy chỉnh bản vẽ (chủ đề có thể tùy chỉnh). Tôi muốn tùy chỉnh cách các hộp kiểm và nút radio được vẽ.Làm thế nào để tìm hiểu xem tôi có phải là một NSButton với buttonType NSSwitchButton không?
Có ai biết cách phát hiện nút có là hộp kiểm hoặc nút radio không?
Chỉ có -setButtonType :, no getter và không -showsStateBy hoặc –ighlightsBy dường như cung cấp bất kỳ giá trị trả lại duy nhất nào cho hộp kiểm không áp dụng cho các nút ấn thông thường với hình ảnh và hình ảnh thay thế.
Cho đến nay tôi đã tìm thấy hai (không phải là rất khá) cách giải quyết, nhưng họ là những loại mà ta có thể hãy tải ứng dụng từ chối từ MAS:
Sử dụng [tự valueForKey: @ "buttonType"]. Điều này làm việc, nhưng vì phương pháp này không có trong các tiêu đề, tôi đoán đây là điều mà Apple không muốn tôi làm.
Ghi đè -setButtonType: và -initWithCoder: để theo dõi loại nút khi được đặt thủ công hoặc từ XIB. Sự cố ở đây là trường hợp XIB, vì các phím được sử dụng để lưu loại nút vào đĩa không có giấy tờ. Vì vậy, một lần nữa, tôi sẽ sử dụng API riêng tư.
tôi thực sự như thế này là một sự thay thế thả trong thẳng cho NSButtonCell thay vì buộc mã khách hàng sử dụng một lớp ULIThemeSwitchButtonCell riêng cho các hộp kiểm và một phần ba cho nút radio.
Đối với những gì nó có giá trị, '[tự valueForKey: @ "buttonType"]' không hoạt động trên OS 10.7, nó ném một ngoại lệ khóa không xác định. – JWWalker