关闭呈现 viewController 不起作用并出现警告消息

Posted

技术标签:

【中文标题】关闭呈现 viewController 不起作用并出现警告消息【英文标题】:dismiss presenting viewController is not working and a warning message is appeared 【发布时间】:2013-11-30 15:43:07 【问题描述】:

我在关闭当前 viewController 并呈现另一个 viewController 时遇到问题。我有一个名为 viewController3 的当前 viewController 和 MKMapView。当我尝试从 viewController3 打开另一个 viewController 时,会显示一条警告消息

“警告:在演示过程中尝试在 <ViewController2: 0xb8485e0> 上演示 <ViewController3: 0xb84e270>!”

"尝试关闭其视图当前未出现的模态视图控制器。self = <ViewController2: 0xb8485e0> modalViewController = <ViewController3: 0x9b55130>"

更新:

也会显示此警告

“警告:尝试在视图不在窗口层次结构中的<ViewController3: 0xb18ebc0> 上显示<ViewController4_modified: 0x9b79c70>!”

这是 viewController3.m 文件中的代码

- (IBAction)testButton:(id)sender

ViewController4_modified *VC4 = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewController4_modified"];

VC4.formUserNameTextInVC3 = self.mapUserNameTextInVC2;

[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];

NSLog(@"VC3 is dismissed");

[self presentViewController:VC4 animated:YES completion:nil];


我也使用相同的代码从 viewController2 转到 viewController3。 任何帮助将不胜感激。 提前致谢 !

【问题讨论】:

【参考方案1】:

我找到了解决办法。

而不是使用:

[self dismissViewControllerAnimated:YES completion:nil];

使用:

[[[self parentViewController] parentViewController] dismissViewControllerAnimated:YES completion:nil];

【讨论】:

【参考方案2】:

您在加载新视图的同时关闭视图的问题。你应该做的是在你完成解雇后加载新视图:

  [self.presentingViewController dismissViewControllerAnimated:YES completion: ^
          NSLog(@"VC3 is dismissed");
         [self presentViewController:VC4 animated:YES completion:nil];
  ];

这样,它会关闭当前控制器,然后在完成后加载下一个控制器。

【讨论】:

我在 viewController2 和 viewController3 之间尝试过,但问题是当 viewController3(具有 MKMapview 的那个)从 viewController2 加载时,它加载速度很快,整个 viewController 被冻结,就像所有东西都被禁用: / 好的,在您的错误中,您的 ViewController2 视图似乎没有出现。那只是一个普通的 viewController 吗? 在我的应用程序中,所有 viewController(s) 都是常规的 .. 很抱歉没有解释清楚,但问题出在 viewController3 ... 甚至日志语句 NSLog(@"VC2 被驳回") 没有出现 尝试将 self.presentingViewController 改为 self,看看是否可行 我刚刚注意到这个警告 警告:尝试在 上呈现 其视图不在窗口层次结构中!

以上是关于关闭呈现 viewController 不起作用并出现警告消息的主要内容,如果未能解决你的问题,请参考以下文章

CALayer 旋转动画不适用于呈现的 ViewController

当应用程序完全关闭时,推送通知点击上的推送 ViewController 将不起作用

关闭一个 ViewController 并在 iOS 中启动另一个(不是重复的,其他答案不起作用)

当我呈现视图控制器时,交互式弹出手势不起作用

从侧面菜单推送 ViewController 不起作用

关闭模式视图后标签栏文本太大