知道推送的 viewController 是否可见
Knowing if a pushed viewController is visible
我有一个 iOS 具有这种结构的应用程序
SplitViewController
| |
| |________ TableViewControllerA
|
|________ NavigationController > ViewControllerB > ViewController C
|
|
ViewControllerX
VCB 加载后,它会在显示 ViewControllerX 的 viewWillAppear 上触发推送转场。
这个 ViewControllerX 不在应用程序的常规流程中,它只是一个 viewController 与消息 "select one option" 一起显示,告诉用户 select 一个选项在 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];
此时 choseOption 不为零。
你可以用不同的方式做到这一点,我认为这真的取决于上下文。
你试过吗:
if(self.navigationController.visibleViewController == self){
}
或
if([self.navigationController.visibleViewController isKindOfClass:[VCX class]]){
}
顺便说一句...如果 VCX 由 navigationControlller 模态呈现,您可以这样做:
if([self.navigationController.presentedViewController && [self.navigationController.presentedViewController isKindOfCLass:[VCX class]]){
}
我会考虑使用 NSNotificationCenter
。当用户执行您想在 VCA 中跟踪的操作时,post 会发出通知。让 VCX 在该通知出现时收听该通知,并在它消失时停止收听。
如果 VCX 收到通知,它就会解除。如果它不在屏幕上,则没有其他人关心通知,它会被忽略。
我有一个 iOS 具有这种结构的应用程序
SplitViewController
| |
| |________ TableViewControllerA
|
|________ NavigationController > ViewControllerB > ViewController C
|
|
ViewControllerX
VCB 加载后,它会在显示 ViewControllerX 的 viewWillAppear 上触发推送转场。
这个 ViewControllerX 不在应用程序的常规流程中,它只是一个 viewController 与消息 "select one option" 一起显示,告诉用户 select 一个选项在 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];
此时 choseOption 不为零。
你可以用不同的方式做到这一点,我认为这真的取决于上下文。
你试过吗:
if(self.navigationController.visibleViewController == self){
}
或
if([self.navigationController.visibleViewController isKindOfClass:[VCX class]]){
}
顺便说一句...如果 VCX 由 navigationControlller 模态呈现,您可以这样做:
if([self.navigationController.presentedViewController && [self.navigationController.presentedViewController isKindOfCLass:[VCX class]]){
}
我会考虑使用 NSNotificationCenter
。当用户执行您想在 VCA 中跟踪的操作时,post 会发出通知。让 VCX 在该通知出现时收听该通知,并在它消失时停止收听。
如果 VCX 收到通知,它就会解除。如果它不在屏幕上,则没有其他人关心通知,它会被忽略。