【问题标题】:Creating a Tab Bar with Storyboards for each Tab为每个选项卡创建一个带有情节提要的选项卡栏
【发布时间】:2015-07-30 16:44:01
【问题描述】:

我在 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

现在我的问题是。这样做可以吗?使用这种方法可能会遇到什么问题吗?

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

【问题讨论】:

  • 您可以通过仅在用户按下选项卡时实例化 vc 而不是一直保留它们来优化这一点
  • 是的。在某些情况下,我需要保持 vcs 的实例化,尽管@Fonix

标签: ios objective-c cocoa-touch uistoryboard


【解决方案1】:

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

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

希望这会有所帮助,

乔什。

【讨论】:

    【解决方案2】:

    我们在其中一个项目上这样做了,当您的应用变得越来越大时,这样做是合理的。故事板在变大时很慢,这就是为什么以前我们使用 hack 将它们分成多个部分,而现在在 iOS 9 中,我们正式可以在没有 hack 的情况下做到这一点。然而,拆分故事板的需要是他们的问题。故事板的主要价值是直观地表示导航复杂性,以便您可以概览整个事物,而在将其拆分为部分时您无法做到这一点。所以技术上是对的,概念上是错的。祝你好运:)

    【讨论】:

      猜你喜欢
      • 2020-04-11
      • 2012-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多