presentModalViewController不起作用

时间:2012-12-17 07:12:41

标签: ios uiviewcontroller presentmodalviewcontroller

-(void)backAction:(id)sender
{ 
   SecondViewController *viewCtrl = [[SecondViewController alloc] init];

   [self.presentingViewController dismissModalViewControllerAnimated:NO];

   [self.presentingViewController presentModalViewController:viewCtrl animated:YES];
}

我想dismissModalViewControllerAnimated当前的控制器,然后呈现一个新的控制器。但它只有dismissModalViewControllerAnimated:NO

为什么?

3 个答案:

答案 0 :(得分:1)

在第一行中解雇自己之后,

self.presentingViewController将为零。因此,您所要做的就是在解雇之前直接引用控制器。在以下示例中,呈现视图控制器属于ViewController类。您将不得不使用类是您的实际呈现视图控制器。

-(void)backAction:(id)sender {
     ViewController *presenter = (ViewController *)self.presentingViewController; 
     SecondViewController *viewCtrl = [[SecondViewController alloc] init];

     [presenter dismissModalViewControllerAnimated:NO];
     [presenter presentModalViewController:viewCtrl animated:YES];
}

答案 1 :(得分:0)

也许你可以试试这个:

[self.presentingViewController dismissViewControllerAnimated:NO completion:^{
    [self.presentingViewController presentModalViewController:viewCtrl animated:YES];
}]

答案 2 :(得分:0)

在此行中,您已经关闭了视图控制器

[self.presentingViewController dismissModalViewControllerAnimated:NO];

然后在下一行中,您尝试使用已被解除的视图控制器预设模态视图。

[self.presentingViewController presentModalViewController:viewCtrl animated:YES];

而是尝试使用这两个视图的父视图控制器(如果有的话)呈现模态视图。您也可以在解除第一个视图后向父视图控制器发出通知,以便您可以从父视图控制器启动第二个模态视图。

相关问题