2014-12-17 10 views
7

Câu hỏi này là một phần mở rộng để link
(Câu hỏi đặt ra trong liên kết chủ yếu mục tiêu, ràng buộc NSPopupbutton đến một NSArrayController)ảnh Binding để NSPopupbutton từ NSArrayController

Tôi có một lớp Person có tính NSString *nameNSImage *avatar
tôi phải hiển thị tất cả tên của những người trong nút Popup như trong hình dưới đây. enter image description here

Nhưng bây giờ, khi yêu cầu đã thay đổi, tôi cũng cần hiển thị hình đại diện của người đó.
Làm thế nào để sử dụng bindings Cocoa để ràng buộc avatar của người để nút NSPopup để nó trông giống như một trong hình trên cho michael (cuối cùng tùy chọn trình đơn)


Lưu ý: Michael đã bị tạm thời gia tăng đối với cuộc biểu tình sử dụng mã sau đây:

person.title = @"Michael"; 
person.image = [NSImage imageNamed:@"avatar.png"]; 
[_popupButton.menu addItem:person]; 
+0

NSMenuItem thể hiện ràng buộc hình ảnh. Câu hỏi đặt ra về cách thiết lập mọi thứ trong Trình tạo giao diện? Bởi vì được cấp quyền truy cập vào NSMenuItem * đó và một NSImage *, bạn chỉ cần tạo một ràng buộc theo cách bạn tạo ra bất kỳ ràng buộc nào khác. – stevesliva

+0

@stevesliva Có – Kaunteya

+0

Bạn tự động tạo NSMenuItems như thế nào. Bởi vì đó là nơi mà hình ảnh của bạn sẽ được tiêm. –

Trả lời

0

có hai cách bạn có thể đạt được điều đó: -

Đầu tiên lấy tableview cell-based bên trong đó hai cột một cho ô hình ảnh và giây cho ô văn bản. Cư bàn thông qua các ràng buộc và sau đó thêm tableview của bạn bên trong nút bật lên của bạn theo cách dưới đây: -

NSMenu *theMenu = [[NSMenu alloc] initWithTitle:@""]; 
NSMenuItem *Item = [[NSMenuItem alloc] initWithTitle:@"NameList" action:NULL keyEquivalent:@""]; 
[Item setView:self.tableVw]; 
[theMenu addItem:Item]; 
[self.popUptn setMenu:theMenu]; 

Second làm theo các bước dưới đây rất đơn giản: -

Giả sử mảng của bạn có chứa các yếu tố tên.

1) Chọn arrayContoller của bạn liên kết với FileOwner'sModelKeyPath->array.

2) Chọn PopUpButton bên trong binding Inspector->Selected Object liên kết với FileOwner'sModelKeyPath->yourString. Điều này sẽ chọn tên được yêu cầu cho phù hợp.

3) Chọn PopUpButton bên binding Inspector->Content ValuesModelKeyPath->array

4) Bây giờ cho thiết lập các image bên popupButton tham khảo bên dưới mã: -

NSMenuItem *menuItm=[self.popUpBtn itemWithTitle:@"Michael"]; 
[menuItm setImage:[NSImage imageNamed:@"dot.gif"]]; 

Edit: -

1) Trong phương pháp đầu tiên văn bản và hình ảnh của bạn cả hai đều phổ biến thông qua ràng buộc chỉ cần bạn cần thêm tableview đó bên trong cửa sổ bật lên của bạn.

2) Trong phương thức thứ hai, nút bật lên của bạn sẽ hiển thị hình ảnh cho họ nhưng theo chương trình. Và cũng có thể, nếu cần thiết để hiển thị các hình ảnh cho tất cả các tên sau đó sử dụng cho vòng lặp để thiết lập hình ảnh bên trong mục trình đơn.

+1

Vui lòng đọc lại câu hỏi. Tôi chỉ muốn làm trong Cocoa Bindings. Tôi đã nhận thức được giải pháp do bạn đưa ra. Ngoài ra các bình luận trong các quốc gia tiền thưởng "Tôi là một mong đợi một giải pháp duy nhất ràng buộc." – Kaunteya

+0

Bạn có thể sử dụng tableview và thông qua ràng buộc bạn có thể điền dữ liệu. Nhưng bạn cần phải thêm tableview đó vào trong popupbutton của bạn. Tham khảo câu trả lời được cập nhật. –

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