頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


UIBarButtonItemからUIButtonは取得できる?

ナビゲーションバーの左右にボタンを設置したい時ってあるじゃない。
よくあるのはこんな流れだと思うんだけどさ。
{
    UIButton *button = [UIButton buttonWithType:100];
    [button addTarget:self action:@selector(closeButtonTappedHandler) forControlEvents:UIControlEventTouchUpInside];
    [button setTitle:@"Close" forState:UIControlStateNormal];
    
    UIBarButtonItem *barButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:button] autorelease];
    self.navigationItem.rightBarButtonItem = barButtonItem;
}
ナビゲーションバーのボタン

↑こんな感じでナビゲーションバーにボタン表示できるよね。

ここでbarButtonItemがわかっている場合(インスタンスなりプロパティなりしてるとか)そこからUIButtonオブジェクトへの参照を得たい場合にどうするんだろう?と思ってさ。
なんとなくUIBarButtonItemのリファレンスを見ればbuttonプロパティなんてありそうなもんだけどないんだよね。

あるのはcustomViewってプロパティ。リファレンスを見ると
customView
A custom view representing the item.
@property(nonatomic, retain) UIView *customView
↑このようにUIViewとして得られるんだけど、このポインタを確認してみる。
{
    NSLog(@"button = [%p]",button);
    NSLog(@"barButtonItem.customView=[%p]",barButtonItem.customView);
}
↑さっきのコードに追加。

ポインタ比較結果

↑すると結果は同じなんだよね。
ってことでキャストすればUIButtonオブジェクトとして使える。めでたし、めでたし。

<< 定点での傾きが決まってる場合のn次曲線近似を最小二乗法で求める(2)  TopPage  UIScrollViewのサブビューを拡大した後におかしくなる >>

コメント


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

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/796-8eb975ee




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad