我有一个问题,即解雇当前的viewController并呈现另一个。我有当前的viewController,名为viewController3,带有MKMapView。当我尝试从viewController3打开另一个viewController时出现一条警告消息
“警告:在演示文稿正在进行时,尝试在<ViewController3: 0xb84e270>
上展示<ViewController2: 0xb8485e0>
!”
“尝试关闭其视图当前不显示的模态视图控制器.self = <ViewController2: 0xb8485e0>
modalViewController = <ViewController3: 0x9b55130>
”
更新:
此警告也会显示
“警告:尝试在视图不在窗口层次结构中的<ViewController4_modified: 0x9b79c70>
上显示<ViewController3: 0xb18ebc0>
!”
这是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。 任何帮助将不胜感激。 提前致谢 !
答案 0 :(得分:1)
我找到了解决方案。
而不是使用:
[self dismissViewControllerAnimated:YES completion:nil];
使用:
[[[self parentViewController] parentViewController] dismissViewControllerAnimated:YES completion:nil];
答案 1 :(得分:0)
您在加载新视图的同时解除视图的问题。在您完成解雇后,您应该做的是加载新视图:
[self.presentingViewController dismissViewControllerAnimated:YES completion: ^{
NSLog(@"VC3 is dismissed");
[self presentViewController:VC4 animated:YES completion:nil];
}];
这样,它将关闭当前控制器,然后在完成后加载下一个控制器。