ツールバーのボタン群を入れ替えたいわけですが…
ツールバーに並ぶボタン群を違う内容に切り替えたい場合があります。
そんなとき、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 でも教えて下さると嬉し泣きます。