解除显示viewController不起作用并出现警告消息

时间:2013-11-30 15:43:07

标签: objective-c uiviewcontroller

我有一个问题,即解雇当前的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。 任何帮助将不胜感激。 提前致谢 !

2 个答案:

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

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