2017-12-17 6 views
0

XML文書を読み込んで保存するMacアプリケーションを作成しています。 "Revert To" & "Duplicate"メニュー項目を除き、すべて正常に動作しています。私はそれらの両方を無効にするソリューションを見つけるまで、私はそれのための任意の解決策を見つけませんでした、私はそれらをエンドユーザがそれらをクリックすることができないように両方のオプションを無効にする方法を教えてください。NSDocumentの「元に戻す」と「複製」メニュー項目を無効にする

私は既にメニューを.xibから探しています。私はそれらを無効にすることができますが、私はオプションを見ません。

私は何らかの形でコードを操作しようとしましたが、回答が見つかりませんでした。

オーバーライドFUNC(重複)スロー - (又はvalidateUserInterfaceItem(_:))>のNSDocument { 戻り自己 }

答えて

1

ココアのメニュー項目を無効にする一般的な方法はvalidateMenuItem(_:)falseを返して

この場合NSDocumentサブクラスに次のコードを記述します。

override func validateMenuItem(_ menuItem: NSMenuItem) -> Bool { 

    guard let action = menuItem.action else { return false } 

    switch action { 
    case #selector(duplicate(_:)): 
     return false 
    case #selector(revertToSaved(_:)): 
     return false 
    default: break 
    } 

    return super.validateMenuItem(menuItem) 
} 

しかし、アップルのヒューマンインタフェースガイドラインによれば、使用されていないメニュー項目は残してはいけません。だから、あなたのアプリが重複をサポートしておらず、機能を元に戻すことができない場合は、無効にするのではなく項目を削除することをお勧めします。

+0

あなたの答えをありがとう、それは私を助けました。私は働いていないappdelegateでvalidateMenuItemを与えようとしていますが、NSDocumentのサブクラスにコードを移動することは助けになりました。 –

関連する問題