2012-06-25 41 views
5

Tôi muốn liên kết thuộc tính boolean enabled của một NSTextField với trạng thái của NSButton. Tôi đã thử thêm một tuỳ chỉnh NSValueTransformer để biến đổi trạng thái của NSButton thành NSNumber. Tuy nhiên, trong trường hợp đó, các trường văn bản bị vô hiệu hóa mọi lúc vì một lý do nào đó. Cách tiếp cận thứ hai của tôi: Để không thành công cũng vì NSValueTransformer không cung cấp các loại nguyên thủy trả về như BOOL.Ca cao: Cách liên kết thuộc tính boolean với NSCellStateValue?

Ví dụ:
Ảnh chụp màn hình cho thấy một ví dụ trong đó các lĩnh vực văn bản bị vô hiệu hóa vì hộp kiểm có tình trạng NSOnState. Tôi cũng muốn gắn các nhãn vào trạng thái này.

Disabled text fields

Hơn nữa, nó sẽ được thuận tiện, nếu tôi có thể thiết lập một "khuyết tật text" trong giao diện Builder. Trong ví dụ trên, tôi đặt văn bản trong lớp được liên kết.


Edit:

tôi đặt self.anonymousLoginCheckbox.state như Mẫu Đường dẫn chính cho kích hoạt tài sản của trường văn bản tài khoản. Tương tự cho trường văn bản mật khẩu. Tuy nhiên, nó hoạt động không phải.

Interface Builder Binding


Cập nhật:

Tôi tạo ra một example project available on GitHub showing the implementation vui lòng mô tả bởi Nicolas Bachschmidt.

Trả lời

13

NSButton không tuân thủ KVO cho khóa state. Cocoa Bindings yêu cầu đối tượng quan sát để phát ra thông báo khi thay đổi thuộc tính quan sát được. Vì của NSButton chỉ là một trình bao bọc cho phương thức state, -[NSButton setState:] của ô (và thông báo KVO tự động) không được gọi khi người dùng nhấp vào nút (nhưng -[NSCell setState:] là). Nếu bạn đặt đường dẫn khóa mô hình thành self.anonymousLoginCheckbox.cell.state, nó sẽ hoạt động.