UITabBarControllerでの遷移先のStoryboardを分割する方法
IOSのアプリ開発を行う際にStoryboardを使用する方も多いかと思います。
ただ、1つのStoryboardに全ての遷移を入れてしまうと、Storyboardが肥大化してしまいます。
大きすぎるStoryboardを読み込むと最悪XCodeが落ちてしまってどうにもならない、
という事も起きてしまうそうです。
そこで大事になるのがStoryboardを分割する事なのですが、
分割方法に関しては調べれば大量に出てくるのでここでは割愛します。
今回自分がぶつかったのはStoryboard分割してかつ、それをUITabBarController
で使用する事です。
その方法を自分への備忘録も含めまとめます。
UITabBarControllerでの分割方法も調べれば結構出てきますが
1.UITabBarControllerの配置
はじめにUITabBarControllerを配置します
ツールバーで検索すれば出てくるので適当に配置すれば大丈夫です。
初期状態だとこんな感じになるかと思います。
Storyboardを分割しないのであればここに遷移をつないでいけばいいのですが、
今回は分割する事が目的なので、コードを書いていきます。
2.UITabBarControllerのコードを書く
UITabBarControllerにつけるコードを書いていきます。
今回自分が実装したのは、
タブを押した際のViewcontollerを差し替える形になります。
コードは以下の通りです。
#import <UIKit/UIKit.h>
@interface SplitStoryBoardTabController : UITabBarController
@end
#import <UIKit/UIKit.h>
#import "SplitStoryBoardTabController.h"
@implementation SplitStoryBoardTabController
- (void)viewDidLoad {
[super viewDidLoad];
NSMutableArray* viewControllers = [self.viewControllers mutableCopy];
NSUInteger size = viewControllers.count;
for( NSUInteger i=0; i<size; ++i )
{
UIViewController* viewController = viewControllers[i];
@try {
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:viewController.title bundle:nil];
// ここで表示したい ViewController を指定する
UIViewController* setViewController;
setViewController = [storyboard instantiateInitialViewController];
viewControllers[i] = setViewController;
}
@catch (NSException *exception) {
NSLog(@"Err : %@", exception.name);
}
}
self.viewControllers = viewControllers;
}
@end
UITabBarControllerはタブを押した際の遷移先をviewControllersという
プロパティに保持しています。
これを差し替えることによって遷移先を分割したStoryboardのViewControllerへの
遷移を実現します。
また、Storyboardのファイル名はタブコントローラについているViewControllerの
Titleから取得するようにしてみました。
このクラスを先ほど設置したUITabBarControllerに設定します。
3.Storyboardのタイトルを設定
最後にViewControllerのTitleを設定して読み込む
Storyboardを指定します。
こんな感じで設定してあげると、タブの遷移先が指定のStoryboardのIs Initialが付いている
ViewContorllerになります。
以上となります。
Author And Source
この問題について(UITabBarControllerでの遷移先のStoryboardを分割する方法), 我々は、より多くの情報をここで見つけました https://qiita.com/Thiru0000/items/4dedb6c732ebb9e704c2著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .