gpt4 book ai didi

ios - 需要帮助解除模态呈现的 ViewController 并从 UINavigationController 弹出 ViewController

转载 作者:行者123 更新时间:2023-11-29 01:08:45 25 4
gpt4 key购买 nike

enter image description here

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];
}

V3V2 模态地呈现并且没有代码。

运行应用程序后,我点击主页按钮并再次打开应用程序,此触发通知并由 V2 收到.

什么V2应该做的是:

  1. 解雇 V3 .如果V3没有ViewController子类,然后它被解雇,否则它不会。
  2. V2本身必须从 UINavigationController 中弹出,但如果 V3 则不会弹出不会被驳回,但会给出日志 goBackToV1 .

如果打开V3我这样做NSLog(@"%@", [self presentingViewController]);我得到<UINavigationController: 0x13582d800>

我的问题:

  1. 为什么 V3当没有 ViewController 子类分配给它时被解雇。
  2. 为什么 V3当 ViewController 子类被分配给它时,不会被解雇。
  3. 为什么 performSegueWithIdentifierV2没有将其弹出到 V1虽然代码被执行,但它的简单被忽略了。

最佳答案

首先检查V2中是否有presentedViewController,如果有,则关闭它并在完成 block 中执行segue,否则直接执行segue,

-(void)goBackToV1 {
NSLog(@"goBackToV1");
if(self.presentedViewController) {
[self dismissViewControllerAnimated:YES completion:^{
[self performSegueWithIdentifier:@"uwid" sender:nil];
}];
} else {
[self performSegueWithIdentifier:@"uwid" sender:nil];
}
}

关于ios - 需要帮助解除模态呈现的 ViewController 并从 UINavigationController 弹出 ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36007971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com