在情节提要中推送多个视图控制器
Posted
技术标签:
【中文标题】在情节提要中推送多个视图控制器【英文标题】:Push multiple view controllers in storyboard 【发布时间】:2015-05-22 14:37:11 【问题描述】:我在故事板中有三个控制器(FriendVC、ChatVC、PrivateChatVC),并且导航是顺序的:
用户可以从FriendVC
导航到ChatVC
(在TabBarController
),然后导航到PrivateChatVC
。
现在,我需要制作一些按钮,该按钮将从FriendVC
打开PrivateChatVC
,但还将ChatVC
放在导航堆栈上,因此当用户从PrivateChatVC
按下返回时,他将返回到@987654329 @。
我面临的问题是我的ChatVC
是TabBarController
。
下面是我正在尝试的代码:
[self.tabBarController setSelectedIndex:1];
PrivateChatController * privateChatController = [self.storyboard instantiateViewControllerWithIdentifier:@"privatechat"];
[self.navigationController pushViewController:privateChatController animated:YES];
我假设[self.tabBarController setSelectedIndex:1]
将加载标签栏,然后[self.navigationController pushViewController:privateChatController animated:YES];
将加载PrivateChatVC
。
但是,我只需要 ChatVC
和 PrivateChatVC
永远不会加载。
【问题讨论】:
【参考方案1】:您在正确的轨道上,您需要像您一样选择 ChatVC 选项卡,但使用单例类并设置一个参数,以便当 ChatVC 成为活动 VC 时,它知道立即推送 PrivateChatVC。
在 FriendVC 中:
_singleton.showPrivateChat = YES;
[self.tabBarController setSelectedIndex:1]; // select ChatVC tab
在 ChatVC 中:
- (void) viewDidAppear
if (_singleton.showPrivateChat)
PrivateChatController * privateChatController = [self.storyboard instantiateViewControllerWithIdentifier:@"privatechat"];
[self.navigationController pushViewController:privateChatController animated:YES];
_singleton.showPrivateChat = NO; // reset boolean
【讨论】:
【参考方案2】:警告!!这是非常糟糕的代码!使用它需要您自担风险:)
ChatVC *chatVC = [self.storyboard instantiateViewControllerWithIdentifier:@"chat"];
PrivateChatController * privateChatController = [self.storyboard instantiateViewControllerWithIdentifier:@"privatechat"];
[self.navigationController pushViewController:privateChatController animated:YES];
NSMutableArray *viewControllers = [self.navigationController.viewControllers mutableCopy];
[viewControllers insertObject:chatVC atIndex:viewControllers.count - 2];
self.navigationController.viewControllers = viewControllers;
【讨论】:
以上是关于在情节提要中推送多个视图控制器的主要内容,如果未能解决你的问题,请参考以下文章