我尝试了很多选择,但没有一个有效。问题很简单:
我有一个 UITabBarController,它非常适合 5 个选项卡。
我的问题位于第一个和第二个选项卡上:我需要在每个选项卡下使用相同的 View Controller ,但当然有两个不同的实例。
我尝试添加 2 个不同的导航 Controller ,所有 Controller 都指向与根 Controller 相同的 View Controller 。这样我就可以在每个导航 Controller 上自定义选项卡文本和图标(我主要在界面构建器中工作)。
__ NavController 1 _
/ \
TabController -- NavController 2 -- ViewController
使用此配置:只有第一个选项卡有效(由 NavController1 处理的选项卡),第二个选项卡不显示 View (我绝对不知道显示哪个 View ,但它是空的,黑色的,并且有一个默认的空蓝色导航栏)。如果我只保留一个从导航 Controller 到 View Controller 的链接,如下所示:
__ NavController 1
/
TabController -- NavController 2 -- ViewController
第二个选项卡完美运行!
另一个选项是链接 NavController 两次,但在这种情况下,我需要根据选项卡索引以编程方式配置标题和图像,并且我不确定在哪里执行此操作。
所以:
- 这是正常行为吗?
- IB 有解决方案吗?
- 如果我需要以编程方式设置选项卡外观,我应该在哪里执行此操作?
最佳答案
如果您想以编程方式执行此操作,可以在应用程序委托(delegate)中使用与此类似的代码。
UITabBarController *tbc = [[UITabBarController alloc] init];
MyViewController *mvc1 = [[MyViewController alloc] init];
MyViewController *mvc2 = [[MyViewController alloc] init];
mvc1.title=@"One";
mvc2.title=@"Two";
mvc1.tabBarItem.image=[UIImage imageNamed:@"one.png"];
mvc2.tabBarItem.image=[UIImage imageNamed:@"two.png"];
UINavigationController *nc1 = [[UINavigationController alloc] initWithRootViewController:mvc1];
UINavigationController *nc2 = [[UINavigationController alloc] initWithRootViewController:mvc2];
[tbc setViewControllers:[NSArray arrayWithObjects:nc1,nc2, nil]];
self.window.rootViewController = tbc;
关于iphone - 同一 View Controller 的 2 个实例 : one does not work in the TabBarController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14202177/