私は現在Objective-CでMacアプリを書いていますが、NSMenuItemを非表示にする方法を一生理解することはできません。(注:はい、私は本当に非表示を意味し、無効化/グレーアウトではありません。そうすることのUXへの影響を理解していますが、機能は実際にはあなたが思っているものではありません。これについては私を信じてください。)
ドキュメントにはとにかくそうすることが記載されていませんが、それも可能ですか?
私は現在Objective-CでMacアプリを書いていますが、NSMenuItemを非表示にする方法を一生理解することはできません。(注:はい、私は本当に非表示を意味し、無効化/グレーアウトではありません。そうすることのUXへの影響を理解していますが、機能は実際にはあなたが思っているものではありません。これについては私を信じてください。)
ドキュメントにはとにかくそうすることが記載されていませんが、それも可能ですか?
ヘッダーでを定義NSMenuItem
し、NIBを介して接続している場合は、Hiddenプロパティを呼び出すだけです。
[myMenuItem setHidden:YES];
menuItemを「グレーアウト」すると[myMenuItem setEnabled: NO];
機能が変わったのではないかと思います
[menuItem isHidden: YES]
Obj-Cプロパティの名前は「hidden」です。つまり、基になるブールメンバーの名前は_hiddenであり、3つのアクセサーが自動的に合成されます。2つのゲッター:isHidden
とhidden
1つのセッター:setHidden
。
Obj-Cでは、ドット表記を使用すると、次を使用してのみプロパティを設定できます。
myMenuItem.hidden = YES; // or NO
または通常のメッセージ:
[myMenuItem setHidden:YES]; // or NO
値を取得するにはmyMenuItem.hidden
、、、またはmyMenuItem.isHidden
[myMenuItem hidden]
[myMenuItem setHidden]
現在、Swiftは、(私の意見では言語的に劣っている)CおよびC++から命名規則を借用しています。ブールプロパティには、「isHidden」という名前のセッターとゲッターの両方があります。
XcodeがCocoaObj-CFrameworkヘッダーを変換して、プロパティhiddenを定義するObj-Cインターフェイスを使用すると、読み取り/書き込み可能な「isHidden」swiftプロパティが合成されます。
そのため、ゲッターとセッターの両方として使用できます。
if myMenuItem.isHidden {
}
と
myMenuItem.isHidden = true // or false
これが問題をカバーすることを願っています