在解除前一个控制器后,ios立即显示视图控制器

时间:2014-10-15 11:26:49

标签: ios object presentviewcontroller

在我的ios应用中,我可以说我有三个ViewControllersABC

来自A我出示B并指定A作为代表。在B上执行操作后,我希望从B中解除C并显示A。但是,我希望在屏幕上根本不显示A的情况下执行此操作。这是我的代码,在课程A内:

-(void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    B *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"B-identifier"];
    vc.delegate = self;
    [self presentViewController:vc animated:NO completion:^{}];

}

然后这是执行操作时A调用的B内的委托函数:

- (void) actionPerformed
{
    [self dismissViewControllerAnimated:YES completion:^{
    C *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"C"];
    [self presentViewController:vc animated:NO completion:nil];
}];

然而,即使我将呈现代码放在解雇的完成处理程序中,这也会导致C显示一点(在调用dismiss之后)。我该怎么做才能避免这种情况?

2 个答案:

答案 0 :(得分:2)

如果您使用它进行登录,那么您应该尝试不同的方法。我的意思是如果A是你的rootViewController(使其成为登录视图控制器),它检查用户是否有会话。假设用户有一个会话然后使用[[[[UIApplication sharedApplication] delegate] window]setRootViewController:]使你的C viewController成为rootViewController,如果他没有会话显示他同一页面(一个viewController),则不需要B.只是尝试它可能会改善你的应用程序性能。

答案 1 :(得分:-1)

You can manage this by timeinterval
like This way

你可以先解除视图[自我解雇];

-(void)dismiss
{
    [self dismissViewControllerAnimated:YES completion:nil];
    [self performSelector:@selector(present) withObject:nil afterDelay:2.0];
}
-(void)present
{
    C *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"C"];
    [self presentViewController:vc animated:NO completion:nil];
}