にけのて
Nike+iPod と JogNote を使ってジョギング。で、Mac から Nike+ のデータをあれこれ見たくなったので、ちょこちょこっと作ってみた。
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

NSMenuItem をグレーにするには
にけのてのバックアップ関係のメニューを、iPod が接続されていない等の使えない状態の時にグレーにしようと思った。なんとなく NSMenuItem に enable/disable な感じで設定すれば良いんじゃないかな?と思ってリファレンスを見てみた。結果、さっくりと
- (void)setEnabled:(BOOL)flag
が見つかった。flag に YES/NO を渡せばグレーになったり、元に戻ったりすると思ったんだけど…
これがそうはならなかった。う~ん、NSButton なんかは setEnabled でできるんだけど。

で、面倒くさがらずにちゃんとあれこれ読んでみると、validateMenuItem が関係しているようだ。なにやら NSMenuItem の target に
- (BOOL)validateMenuItem:(id )menuItem
を実装しなきゃいけないらしい。この中で、メニューアイテムが使えるなら YES、使えない(グレー)なら NO を返すと。機能が実装されているオブジェクトで使えるか使えないかの責任を持つのね。メニュー表示の度に問い合わせてくるので、状況によって YES/NO を変更できると。
早速リファレンスに載ってるサンプルを真似て実装。が、なぜかグレーにならない。なんで? 何もしないで NO を返せばグレーになるので、中の処理の問題。デバッガで追うとセレクタの判断ができていない様子。なぜ???

というわけで、あれこれ探して見つけた原因はセレクタのメソッド名の最後に :(コロン)が無かったのがいけなかったみたい。サンプルは : 無しになってるのに…。ま、なんとか動いたから良いけど、これってサンプルが間違ってるのか、他にもっと理由があるのか?わかると嬉しいな~。
状態によってちゃんとグレーになる!

スポンサーサイト

テーマ:プログラミング - ジャンル:コンピュータ


この記事に対するコメント
コロン
はじめまして、arms22です。
セレクタ名の最後のコロンですが、次のような違いだと思います。

コロンあり
- (void)hoge:(id)sender;

コロンなし
- (void)hoge;

つまりコロンがあれば引数の数が1、なければ引数なし。
コロンのありなしで別のセレクタとして解釈されてしまいます。
なのでセレクタの判断に失敗していたのでしょう。。
※僕も最初はまりました、これ。

ターゲットがちゃんとメソッドを実装していれば、引数があろうとなかろうと問題ないと思います。
でも、ターゲット&アクション関係のメソッドは(id)senderをつけたほうが分かりやすくて、誤解もなくいいと思います。
【2007/02/14 09:48】 URL | arms22 #2fWKKxJA [ 編集]

あ~そうだったんだ!
こんにちは、arms22さん。
コメントありがとうございます。

なるほど! セレクタの正式名称?は引数の有無で変わりますか。
これは全然考えてませんでした。

おかげでスッキリできました!
【2007/02/17 00:54】 URL | paraches #LiQTvM4Q [ 編集]

pfLoqGXbCozp
wUnTfN <a href="http://hjjzugclfgzv.com/">hjjzugclfgzv</a>, [url=http://rkyjuuuzizzs.com/]rkyjuuuzizzs[/url], [link=http://jzuncvnagcgv.com/]jzuncvnagcgv[/link], http://yivymackqvqe.com/
【2012/07/27 20:37】 URL | hbqtzdximam #blWGyrFQ [ 編集]


この記事に対するコメントの投稿














管理者にだけ表示を許可する


この記事に対するトラックバック
トラックバックURL
→http://paraches.blog77.fc2.com/tb.php/16-c9eeae85
この記事にトラックバックする(FC2ブログユーザー)

プロフィール

Author:paraches
Nike+iPod で走ってお腹を…

にけのて ダウンロード

Nike+iPod

温泉旅行

宿・ホテル予約ならじゃらんnet

最近の記事

Zenback

ランキング

人気ブログランキングへ

アクセストレード

バリューコマース

最近のコメント

月別アーカイブ

RSSフィード

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。