首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过UITabBarController打开新故事板的正确途径

通过UITabBarController打开新故事板的正确途径
EN

Stack Overflow用户
提问于 2014-06-19 21:19:08
回答 1查看 206关注 0票数 0

我们正致力于将我们的主要故事板拆分成更小的故事板,以便使源代码管理合并更容易。对于从UITabBar加载新的故事板的正确方法,有什么想法吗?

到目前为止,我们在自定义子类UITabBarController中得到了以下内容:

代码语言:javascript
复制
UITabBarItem *cardsTabItem = [self.tabBar.items objectAtIndex:kTabBarIndexCards];

    cardsTabItem.image = [[UIImage imageNamed:@"navCardsOff"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    cardsTabItem.selectedImage = [[UIImage imageNamed:@"navCardsOn"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    cardsTabItem.imageInsets = UIEdgeInsetsMake(-5, 0, 5, 0);
    cardsTabItem.titlePositionAdjustment = UIOffsetMake(0, -5);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-19 21:47:36

我以前也做过同样的事情,但用的是UITabBarController。在这种情况下,我们为每个选项卡按钮设置了一个情节提要,尽管其中一个情节提要中只有一个视图控制器。我认为无论您是使用UITabBarController还是响应选项卡栏委托,答案都是相同的。对于单击的每个按钮,确定要加载的视图控制器位于哪个情节提要中:

代码语言:javascript
复制
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"leftButtonStoryboard" bundle:[NSBundle mainBundle]];
UIViewController *vc = [storyboard instantiateInitialViewController];

//or

UIStoryboard *otherVC = [storyboard instantiateViewControllerWithIdentifier:@"CameraViewController"];

然后你可以展示它,推动它,或者其他什么。

在我的例子中,由于我使用的是UITabBarController,这都是在所有不同按钮的控制器初始化过程中完成的。

默认情况下,您在故事板(故事板id)中使用的所有不同的视图控制器(故事板id)都会很有用,我通常以viewController类的名字命名它们,这样我就不需要记住我的名字了。

我还建议您在尝试实例化另一个视图控制器时避免使用self.storyboard属性,因为您可能会遇到控制器在选项卡之间共享的情况。明确地使用从哪个故事板加载控制器有助于提高可读性和避免错误。

编辑-一个更具体的例子:

您需要做的是设置您的viewControllers属性的UITabViewController,我在它的init方法中这样做。例如

代码语言:javascript
复制
- (id)initWithCoder:(NSCoder *)aDecoder {
if (self = [super initWithCoder:aDecoder]) {
    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
    UIViewController *one = [mainStoryboard instantiateViewControllerWithIdentifier:@"VC1"];
    UIViewController *two = [mainStoryboard instantiateViewControllerWithIdentifier:@"VC2"];

    self.viewControllers = @[one,two];
    }
return self;
}

如果您使用的是代码本身,或者您使用的是故事板,则可以使用此技术。请注意,如果您已经通过故事板连接了其他视图控制器,那么除非您在那里实例化它们,否则您会松掉的。您还可以使用setViewControllers:动画:方法。

用于创建自定义选项卡条项(底部的按钮)的代码应该放在单独的视图控制器中,并分配给它的tabBarItem属性。UITabBarController将使用该属性创建正确的样式按钮。如果不提供属性,则从1开始得到默认按钮。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24316406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档