当前模态视图控制器不起作用


-(void)backAction:(id)sender
{ 
   SecondViewController *viewCtrl = [[SecondViewController alloc] init];
   [self.presentingViewController dismissModalViewControllerAnimated:NO];
   [self.presentingViewController presentModalViewController:viewCtrl animated:YES];
}

我想dismissModalViewControllerAnimated当前控制器,然后提出一个新的控制器。但它只dismissModalViewControllerAnimated:NO.

为什么?

self.presentingViewController 在第一行中将自己解散后将为 nil。因此,您所要做的就是在解雇之前直接引用该控制器是什么。在下面的示例中,表示视图控制器属于 ViewController 类。您将不得不使用实际呈现视图控制器的任何类。

-(void)backAction:(id)sender {
     ViewController *presenter = (ViewController *)self.presentingViewController; 
     SecondViewController *viewCtrl = [[SecondViewController alloc] init];
     [presenter dismissModalViewControllerAnimated:NO];
     [presenter presentModalViewController:viewCtrl animated:YES];
}

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

[self.presentingViewController dismissModalViewControllerAnimated:NO];

然后在下一行中,您将尝试使用已关闭的视图控制器预设模式视图。

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

相反,请尝试使用这两个视图的父视图控制器(如果有)来呈现模态视图。您还可以在关闭第一个视图后向父视图控制器触发通知,以便可以从父视图控制器启动第二个模式视图。

也许你可以试试这个:

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

最新更新