我们正致力于将我们的主要故事板拆分成更小的故事板,以便使源代码管理合并更容易。对于从UITabBar加载新的故事板的正确方法,有什么想法吗?
到目前为止,我们在自定义子类UITabBarController中得到了以下内容:
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);发布于 2014-06-19 21:47:36
我以前也做过同样的事情,但用的是UITabBarController。在这种情况下,我们为每个选项卡按钮设置了一个情节提要,尽管其中一个情节提要中只有一个视图控制器。我认为无论您是使用UITabBarController还是响应选项卡栏委托,答案都是相同的。对于单击的每个按钮,确定要加载的视图控制器位于哪个情节提要中:
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方法中这样做。例如
- (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开始得到默认按钮。
https://stackoverflow.com/questions/24316406
复制相似问题