【问题标题】:blank when presentViewController after dimissViewController immediately立即在 dimissViewController 之后出现时为空白
【发布时间】:2013-12-09 17:41:01
【问题描述】:

我有一个 A viewController ,首先,我呈现 B viewController ,经过一些工作,我需要关闭 B viewController 并呈现 C viewController ,所以我在 A viewController 中使用以下代码:

        UIViewController *gp = self.presentedViewController;
        [gp dismissModalViewControllerAnimated:NO];
        [self presentModalViewController:viewController animated:YES];

它工作但是我遇到了一个问题,当B viewController被关闭时,用户总是可以看到A viewController,然后呈现C viewController。我想避免这个问题直接直接到C viewController!那我该怎么办?

【问题讨论】:

  • 顺便说一句,让 gp 自行关闭是没有意义的,因为它只是将该消息转发回它的presentingViewController,即A。此外,您不应该使用折旧的present 和dismiss 方法。

标签: ios objective-c uiviewcontroller presentmodalviewcontroller dismiss


【解决方案1】:

如果您想直接转到 C,就这样做。让B在场C,不要解雇B。如果你想从C直接回到A,你可以这样:

[self.presentingViewController.presentingViewController dismissViewControllerAnimated:YES completion:nil];

【讨论】:

    【解决方案2】:

    而不是使用当前视图控制器添加视图作为子视图控制器。即首先将视图 B 添加为子视图控制器,并将其视图添加为子视图。然后添加 C 并删除 B。

    ViewControllerB *b= [ViewControllerB alloc]initWith.......;
    ViewControllerC *c= [ViewControllerB alloc]initWith.......;
    [self addChildViewController:b];
    [self.view addSubview:b.view];
    [self addChildViewController:c];
    [self.view addSubview:c.view];
    [b.view removeFromSuperview];
    [b removeFromParentViewController];
    

    【讨论】:

      【解决方案3】:

      其实你不需要解散 B,只需在 B 中呈现 C。当工作完成后,在 A 中解散视图控制器。

      [_a presentViewController:_b animated:YES completion:nil];
      [_b presentViewController:_c animated:YES completion:nil];
      
      // When the work is done with C, just ask A to dismiss the view controller
      [_a dismissViewControllerAnimated:YES completion:nil];
      

      【讨论】:

        【解决方案4】:

        尝试这种代码。使用 UIStoryBoard 关闭。为你的视图控制器创建一个标识符,不要忘记写下视图控制器的标识符名称

        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:NULL]; ViewControllerC *viewControllerc = [storyboardinstantiateViewControllerWithIdentifier:@"标识符名称"];

        【讨论】:

          猜你喜欢
          • 2015-02-07
          • 1970-01-01
          • 2021-11-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-05-23
          • 1970-01-01
          相关资源
          最近更新 更多