我尝试了很多选项,但没有一个可行。问题很简单:
我有一个UITabBarController,它适用于5个标签。
我的问题位于第一个和第二个标签上:我需要在每个标签下使用相同的视图控制器,当然还有2个不同的实例。
我尝试添加2个不同的导航控制器,所有导航控制器都指向与根控制器相同的视图控制器。这样我就可以在每个导航控制器上自定义选项卡文本和图标(我主要在界面构建器中工作)。
__ NavController 1 _
/ \
TabController -- NavController 2 -- ViewController
使用此配置:只有第一个标签工作(由NavController1处理的标签),第二个标签不显示视图(我绝对不知道显示哪个视图,但它是空的,黑色并且有一个默认的空蓝色导航栏)。如果我只保留一个从导航控制器到我的视图控制器的链接,如下所示:
__ NavController 1
/
TabController -- NavController 2 -- ViewController
第二个标签完美无缺!
另一个选项是链接NavController两次,但在这种情况下,我需要根据选项卡索引以编程方式配置标题和图像,我不知道在哪里可以做到这一点。
所以:
答案 0 :(得分:1)
如果您想以编程方式执行此操作,则可以在应用委托中使用与此类似的代码。
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;
答案 1 :(得分:1)
您应该可以在IB中执行此操作。只需添加两个导航控制器作为两个选项卡的基本控制器,为每个选项卡添加根视图控制器(不仅仅是您在问题中显示的那个),并将这些根视图控制器的类更改为您的子类。
编辑后
如果你有一个复杂的场景作为一个根视图控制器,你可以复制并粘贴它,另一个将出现在IB窗口左侧的对象列表中(并在画布上显示为好吧,但它正好在另一个之上,所以你需要把它拖下去看它。您可以将第二个导航控制器连接到它。您可以这样做,也可以拖入两个不同的UIViewControllers并将它们更改为您的子类(如果您需要为两个不同的实例使用不同的界面)。