UIToolbarのUIBarButtonItemをさしかえる方法
小ネタですが。たとえばEditボタンをおしたら、DONEボタンとかにさしかえたいじゃん?
Flexとかだとかるくbutton.text = "DONE";とかで一行でおわるんだけどねえ。
{ [OK] <---> [Edit] [+] }
というUIToolBarがあるとして、話を進める。
換えたいのは左から3番目のEdit。
(二番目はFlexible Space)
UIBarButtonItem *tmpButton = [[itemListToolbar items] objectAtIndex:2]; tmpButton.title = @"DONE";
結構ややこしいでしょ?…な〜んてこんな簡単に書けるわけがねえな!
//ToolBarに登録されているアイテムのidが入ったNSArrayをうけとり(COPY)、 //NSMutableArrayを生成している。これはNSArrayがものすごく低機能な為。 NSMutableArray *tmpItemListToolbarButtons = [[NSMutableArray alloc] initWithArray:[itemListToolbar items]]; //新しくUIBarbuttonItemのインスタンスを作る UIBarButtonItem *tmpButton = [[UIBarButtonItem alloc] initWithTitle:@"DONE" target:nil action:nil]; //配列の左から三番目のオブジェクトを差し替える [tmpItemListToolbarButtons replaceObjectAtIndex:2 withObject:tmpButton]; //こうして出来たToolBar itemsを再度ToolBarに代入してやる [itemListToolbar setItems:tmpItemListToolbarButtons animated:YES];
めんどくせえええ!!
ホントにこんな書き方しなきゃいけないの?なんか俺間違えてるんかなあ…。とおもってしまう…。