我正在使用一個有兩列的NSOutlineView
。我的dataSource
爲大綱視圖提供了一個代表文件類型的自定義類的項目樹(也就是說,您使用UTI初始化它)。第一列是文件類型的顯示名稱(例如,「源代碼」,「Interface Builder NIB文檔」等)。第二列是一個NSPopUpButtonCell
,它應該允許用戶爲給定的文檔類型選擇一個處理程序(想想Xcode的「文件類型」偏好窗格,而且你幾乎是這樣)。NSOutlineView中動態填充的NSPopUpButtonCell菜單
我可以爲樹中的給定項目生成一個NSMenu
,填充基於UTI的啓動服務數據庫條目的選項,並附帶相關的應用程序圖標等等。實際上,菜單本身非常有效,通過NSPopUpButtonCellWillPopUpNotification
進行填充。
問題是,盡我所能,當菜單不是彈出的單元格總是包含兩個東西中的一個:要麼是空字符串,要麼是單元格的默認文本,前者如果該項目上的-handlerName
的結果(分配給該列的屬性)爲非nil
,否則爲後者。
此外,我正在NSPopUpButtonCell
實例上手動調用-selectItem:
,這似乎是錯誤的。相比之下,左側的列僅僅是一個NSTextFieldCell
,一切正常(雖然被授予,但所要做的只是從項目中讀取值並呈現它)。 (免責聲明:我在Cocoa UI的東西里相當新,我知道Objective-C和許多其他編程語言,但是我沒有大量構建Mac OS X UI的經驗,所以請溫和地)。