为了澄清事情,我不想要使用UITabBarController
。我需要对使用UITabBar
无法完成的UITabBarController
进行一些自定义更改。 (比如让它滚动等')
这就是我创建UITabBar
在Interface Builder中,我拖了UITabBar
并将其放在ViewController
内。
连接代表和出口。
添加了UITabbarItem
代码和segue标识符。
并使用此代码:
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
{
if (item.tag==0) {
[self performSegueWithIdentifier:@"Favorite" sender:nil];
}
else if (item.tag==1)
{
[self performSegueWithIdentifier:@"Item" sender:nil];
}
}
我的问题是,当我推送新的ViewController
时UITabBar
消失了。
我的问题是,将UITabBar
保留在推送的ViewController
和其他ViewController
上的正确方法是什么?
我已经尝试使用PrepareForSegue
将其传递给下一个视图控制器并且它可以正常工作但是当我回到之前的控制器时,我需要重置UITabBar
帧等。我想我可以将它作为一个全局对象保存在我的Singleton中并继续将它添加到新的ViewController
中,但这听起来像是一个过度杀戮
有没有更好的方法可以在不使用UITabBarController
的情况下完成?
答案 0 :(得分:1)
即使您不想使用标签栏控制器,您仍应遵循相同的设计模式。您的ScrollableTabBarController
应该是容器视图控制器,当选择不同的选项卡项时,它应该将新项目添加为子视图控制器。阅读视图控制器包含文档以获取更多详细信息。
目前听起来你正在推动容器顶部的视图控制器,这表明你的故事板基于导航控制器。这是错误的做法。
我不确定在故事板中做自定义容器控制器是多么简单,(我会在代码中执行)。您可能必须手动建立连接而不是通过segues。