1

在我的 ios 应用程序中,假设我有三个ViewControllers: ABC.

A我提出B并指定A为代表。完成一项操作后,我B想从. 但是,我想完全不显示在屏幕上。这是我现在的代码,在类内:BCAAA

-(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 出现一段时间(在调用解除之后),即使我将呈现代码放在解除的完成处理程序中。我能做些什么来避免这种情况?

4

2 回答 2

1

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

于 2014-10-15T11:48:58.170 回答
-1
You can manage this by timeinterval
like This way

你可以先dismiss视图[selfdismiss];

-(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];
}
于 2014-10-15T11:44:11.590 回答