我有一个具有此结构的iOS应用
SplitViewController
| |
| |________ TableViewControllerA
|
|________ NavigationController > ViewControllerB > ViewController C
|
|
ViewControllerX
一旦VCB加载,它就会在其viewWillAppear上触发一个push segue,显示ViewControllerX。
这个ViewControllerX不在应用程序的常规流程中,它只是一个带有“select one option”消息的viewController,告诉用户在VCA上选择一个选项。
一旦用户在VCA上选择了一个选项,这个VCX就必须消失,揭示落后的VCB。
我在这个VCX上有一个unwind segue来做这件事,但我怎么知道VCX是否可见?
如何对VCA执行操作会触发VCX上的展开segue,这样VCX可以离开并显示VCB落后?
我从VCA尝试了这个但没有效果
ChooseOption *chooseOption = [[self storyboard] instantiateViewControllerWithIdentifier:@"chooseOption"];
[chooseOption performSegueWithIdentifier:@"unwindChooseOption" sender:nil];
此时chooseOption不是零。
答案 0 :(得分:1)
我会考虑使用NSNotificationCenter
。当用户在VCA中执行您要跟踪的内容时,发布通知。让VCX在出现时收听该通知,并在它消失时停止收听。
如果VCX收到通知,它就会解除。如果它不在屏幕上,则没有其他任何关心通知的内容,它会被忽略。
答案 1 :(得分:0)
你可以用不同的方式做到这一点,我认为这实际上取决于上下文。
你有没有尝试过:
if(self.navigationController.visibleViewController == self){
}
或
if([self.navigationController.visibleViewController isKindOfClass:[VCX class]]){
}
顺便说一下......如果导航控制器以模态方式呈现VCX,您可以这样做:
if([self.navigationController.presentedViewController && [self.navigationController.presentedViewController isKindOfCLass:[VCX class]]){
}