我有一個NSMenuItem
,根據第一響應者是否響應特定的選擇器來啓用/禁用。我是否可以有條件地禁用僅在第一響應者響應選擇器時啓用的NSMenuItem?
我的問題是,有條件我在做而不是想爲第一響應者啓用項目。
但我不能只是有條件地運行期間刪除的方法定義禁用菜單項
對於我的意思的例子:
我有一個NSDocument
基於應用程序,和我有兩個主要亞類ImageDocument
和VideoDocument
我有一個叫做「捕獲幀」的NSMenuItem
,它將視頻幀轉換爲圖像。但顯然這應該在ImageDocument
上禁用,並且只能在VideoDocument
上啓用。如果第一個響應者響應-captureFrame
的VideoDocumentController
有一個方法,-captureFrame
的NSMenuItem
啓用,所以它的啓用。 ImageDocumentController
沒有,所以菜單項從未啓用。
但是,有特定的VideoDocument
s,我不想讓該菜單項啓用。爲了處理特殊情況,禁用此菜單項的最佳方法是什麼?
啊好的,謝謝!你的回答實際上有點不合適,我不得不在文檔的控制器上使用'-validateMenuItem',並且當我調用'super'時我也有一個異常,所以我沒有這樣做。然後一切正常:D在標記正確之前,您可以編輯您的答案嗎? –
我添加了在NSDocumentController中覆蓋的可能性。但如果它不起作用,你做錯了什麼。 NSDocumentController上的文檔甚至說你應該在覆蓋中調用'[super validateUserInterfaceItem:]''。 – JWWalker
啊我看到了這個問題,我說'VideoDocumentController',沒有意識到它暗示我有'NSDocumentController'的子類。在這種情況下,我的「控制器」是顯示「VideoDocument」的「NSViewController」的子類 –