为每个选项卡创建带有故事板的选项卡栏

时间:2015-05-19 02:24:36

标签: ios objective-c cocoa-touch uistoryboard

我在main.storyboard中创建了一个标签栏控制器,并将其子类化。

我为每个标签创建了故事板,以便像我这样组织我的工作:

@interface SATabBarController ()

@end

@implementation SATabBarController

- (void)viewDidLoad {
    [super viewDidLoad];

    NSMutableArray *viewControllersArray = [[NSMutableArray alloc]initWithCapacity:5];
    [viewControllersArray addObject:[[UIStoryboard storyboardWithName:@"Tab1" bundle:nil] instantiateInitialViewController]];
    [viewControllersArray addObject:[[UIStoryboard storyboardWithName:@"Tab2" bundle:nil] instantiateInitialViewController]];
    [viewControllersArray addObject:[[UIStoryboard storyboardWithName:@"Tab3" bundle:nil] instantiateInitialViewController]];
    [viewControllersArray addObject:[[UIStoryboard storyboardWithName:@"Tab4" bundle:nil] instantiateInitialViewController]];
    [viewControllersArray addObject:[[UIStoryboard storyboardWithName:@"Tab5" bundle:nil] instantiateInitialViewController]];

    [self setViewControllers:viewControllersArray];

}


@end

现在我的问题是。这可以吗?这种方法可能遇到任何问题吗?

我的故事板变得越来越大,需要找到一种分离方式。

2 个答案:

答案 0 :(得分:1)

我可以立即看到这种方法有两个缺点:

  1. 查看重用 - 这种方法使得在不同选项卡中重用通用视图控制器变得更加困难,并且可能导致您实现同一视图的多个副本。
  2. 捆绑包大小 - 多个故事板的存在可能会不必要地增加您的捆绑包大小。
  3. 希望这有帮助,

    约什

答案 1 :(得分:0)

我们在其中一个项目上完成了这项工作,当您的应用程序变得越来越大时,这是合理的。在成长时,故事板很慢,这就是为什么以前我们使用黑客将它们分成多个部分,现在在iOS 9中我们正式可以不用黑客攻击。然而,需要拆分故事板是他们的问题。故事板的主要价值在于以可以概括整个事物的方式直观地表示导航复杂性,而在将其分成不能执行此操作的部分时。所以在技术上它是正确的,从概念上讲它是错误的。祝你好运:)