我有一些具体的问题:
我的应用程序有4个选项卡,每个选项卡下都有独立的导航控制器。
我们说标签是:“最近”,“聊天列表”,“联系人”和“设置”。有时我需要从不同的标签和位置打开“ChatView”控制器,例如“Contacts”或“Recent”。 “ChatView”位于“聊天列表”选项卡下(根控制器为“ChatListView”),通常在选择一些现有会话后显示(在导航堆栈中,它类似于ChatListView - > ChatView)。
我想找到最好的方法,如何打开“ChatView”控制器切换到“聊天列表”选项卡并重置导航历史记录,这样当用户看到“聊天视图”时,后退按钮我们会转过他到“ChatListView”,但不是“联系”或他之前住过的其他地方。在这种情况下,模态视图不起作用,因为我需要显示标签栏和导航栏。
感谢您的建议!
另请注意,我需要将一些数据传递给新打开的ChatView控制器。只是切换选中的标签栏也是不够的,因为我需要在其根控制器下打开View(ChatListView - > ChatView)
答案 0 :(得分:2)
为此,您可以使用UITabbarController的setSelectedIndex属性。
答案 1 :(得分:1)
您可以使用selectedIndex
属性隐式更改要显示的标签
试试这个:
NSInteger indexOfChatsTab = 1;
UINavigationController *chatsNavigationController = tabController.viewControllers[indexOfChatsTab];
[chatsNavigationController popToRootViewControllerAnimated:NO];
[chatsNavigationController pushViewController:selectedChatViewController animated:NO];
controller.selectedIndex = indexOfChatsTab;
<强>更新强>
上面示例中的selectedChatViewController
是视图控制器,它由用于显示新聊天的必要数据初始化
我的意思是在推送之前你需要像这样初始化它:
ChatViewController *selectedChatViewController = [[ChatViewController alloc] initWithChatData:chatData];