ツールバーのボタン群を入れ替えたいわけですが…
ツールバーに並ぶボタン群を違う内容に切り替えたい場合があります。
そんなとき、Storyboard 万歳なゆとりとしては、こう考えます。
UIStoryboard からinstantiateViewControllerWithIdentifier: 使って部品呼び出して、入れ替え出来んかな?と。
で、あれこれ試した結果、到達した結論が以下です。
コード書いた方がラク
ボタンなどのアイテム群を入れ替えたい場合はコードで実装した方がラクです。
身も蓋もありませんが、これが結論です。
コード
好みのアイテム群をセットするメソッドで用意して、欲しい時に呼び出して更新します。
アイテム群の組み合わせパターンが多い場合は、アイテム群の生成クラスとか用意すると良いでしょうが、2種類を入れ替えたい程度なら、こんなんで十分でしょう。
/* 以下の関数2つを入れ替えたいタイミングで任意に呼び出す */ // アイテム群その1 - (void)setToolbarItems1 { // アイテム群格納用の配列 NSMutableArray* tbItems = [[NSMutableArray alloc] init]; // 普通のBarButtonItem UIBarButtonItem* bbiHoge = [[UIBarButtonItem alloc] init]; [bbiClear setStyle:UIBarButtonItemStyleBordered]; [bbiClear setTitle:@"Hoge"]; [bbiClear setTarget:self]; [bbiClear setAction:NSSelectorFromString(@"tapHoge:")]; // フレキシブルスペース UIBarButtonItem* bbiFlexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; // システムボタン UIBarButtonItem* bbiSave = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:NSSelectorFromString(@"save:")]; [bbiSave setTitle:@"Save"]; // まとめて配列にセット [tbItems addObject:bbiHoge]; [tbItems addObject:bbiFlexSpace]; [tbItems addObject:bbiSave]; // ツールバーに放り込み [[self toolbarMain] setItems:tbItems]; } // アイテム群その2 - (void)setToolbarItems2 { // アイテム群その1 と同様にお好みでアイテム群を用意 }
実際にはStoryboard 使って同じ様なことができるのかもしれんです。
ご存知の方がいらっしゃいましたら、コメントでもTwitter でも教えて下さると嬉し泣きます。