4

私は現在Objective-CでMacアプリを書いていますが、NSMenuItemを非表示にする方法を一生理解することはできません。(注:はい、私は本当に非表示を意味し、無効化/グレーアウトではありません。そうすることのUXへの影響を理解していますが、機能は実際にはあなたが思っているものではありません。これについては私を信じてください。)

ドキュメントにはとにかくそうすることが記載されていませんが、それも可能ですか?

4

3 に答える 3

10

ヘッダーでを定義NSMenuItemし、NIBを介して接続している場合は、Hiddenプロパティを呼び出すだけです。

[myMenuItem setHidden:YES];

menuItemを「グレーアウト」すると[myMenuItem setEnabled: NO];

于 2011-07-28T06:32:06.323 に答える
0

機能が変わったのではないかと思います

[menuItem isHidden: YES]

https://developer.apple.com/documentation/appkit/nsmenuitem

于 2017-12-20T03:03:17.350 に答える
0

Obj-Cプロパティの名前は「hidden」です。つまり、基になるブールメンバーの名前は_hiddenであり、3つのアクセサーが自動的に合成されます。2つのゲッター:isHiddenhidden1つのセッター: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

これが問題をカバーすることを願っています

于 2018-01-05T07:41:53.897 に答える