关闭呈现 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 将不起作用