的AppDelegate
- (void)applicationWillEnterForeground:(UIApplication *)application {
NSLog(@"applicationWillEnterForeground");
[[NSNotificationCenter defaultCenter]postNotificationName:@"applicationWillEnterForeground" object:nil];
}
V1
-(IBAction)uw:(UIStoryboardSegue*)segue{
NSLog(@"Back on V1");
}
V2
-(void)awakeFromNib {
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(goBackToV1) name:@"applicationWillEnterForeground" object:nil];
}
-(void)goBackToV1 {
NSLog(@"goBackToV1");
[self performSegueWithIdentifier:@"uwid" sender:nil];
}
V3
从V2
以模态方式呈现并且没有代码。
运行应用程序后,我点击主页按钮再次打开应用程序,此触发通知由V2
收到。
V2
应该做什么:
V3
。如果V3
没有ViewController
子类,那么它将被解除,否则不会。V2
本身必须从UINavigationController
弹出,但如果V3
未被解除,则会弹出,但会提供日志goBackToV1
。如果在V3
我执行此操作NSLog(@"%@", [self presentingViewController]);
,我会<UINavigationController: 0x13582d800>
我的问题:
V3
在没有为其分配ViewController子类时被解雇。V3
不会被解雇。performSegueWithIdentifier
为什么V2
没有将V1
弹出到var image=new BitmapImage();
,尽管代码已执行但其简单却被忽略了。答案 0 :(得分:1)
首先检查 V2 中是否有presentedViewController
,如果有,请关闭它,然后在完成块中执行segue,否则直接执行segue,
-(void)goBackToV1 {
NSLog(@"goBackToV1");
if(self.presentedViewController) {
[self dismissViewControllerAnimated:YES completion:^{
[self performSegueWithIdentifier:@"uwid" sender:nil];
}];
} else {
[self performSegueWithIdentifier:@"uwid" sender:nil];
}
}