【问题标题】:presentModalViewController doesn't workpresentModalViewController 不起作用
【发布时间】:2012-12-17 07:12:40
【问题描述】:
-(void)backAction:(id)sender
{ 
   SecondViewController *viewCtrl = [[SecondViewController alloc] init];

   [self.presentingViewController dismissModalViewControllerAnimated:NO];

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

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

为什么?

【问题讨论】:

    标签: ios uiviewcontroller presentmodalviewcontroller


    【解决方案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];
    }
    

    【讨论】:

      【解决方案2】:

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

      [self.presentingViewController dismissModalViewControllerAnimated:NO];
      

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

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

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

      【讨论】:

        【解决方案3】:

        也许你可以试试这个:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-01-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-08-06
          • 1970-01-01
          相关资源
          最近更新 更多