空白时立即调用dimissViewController后的presentViewController

时间:2013-11-25 05:44:56

标签: ios objective-c uiviewcontroller presentmodalviewcontroller dismiss

我有一个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!那我该怎么办?

4 个答案:

答案 0 :(得分:1)

如果你想直接去C,那就去做吧。让B出现C,并且不要解雇B.如果你想直接从C回到A,你可以使用这个:

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

答案 1 :(得分:0)

使用UIStoryBoard尝试这种Code.Dismiss。为视图控制器创建一个标识符,别忘了编写视图控制器的标识符名称

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

答案 2 :(得分:0)

而不是使用当前视图控制器添加视图作为子视图控制器。即首先将视图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 :(得分:0)

实际上你不需要解雇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];