iOS - 在关闭其他视图控制器后立即呈现视图控制器

Posted

技术标签:

【中文标题】iOS - 在关闭其他视图控制器后立即呈现视图控制器【英文标题】:iOS - Present View controller immediately after dismissing an other view controller 【发布时间】:2014-03-01 00:43:22 【问题描述】:

我有三个视图控制器 VC1、VC2 和 VC3。

VC2 属于第 3 方库,在 VC1 上提供。

然后 VC2 自行解散并向 VC1 发送回调,VC1 尝试在自身上呈现 VC3 但失败了。

有没有办法在关闭 VC2 后立即呈现 VC3 ?

-(void)onDismisLoginVC

    MessageVC *messageVC = [[MessageVC alloc] initWithNibName:@"MessageVC" bundle:nil];
    [self.navigationController presentViewController:messageVC animated:YES completion:NULL];


不幸的是,我不能使用^completion 块来解除 VC2 中呈现的视图控制器,因为我只是收到了对该方法的回调并且无法编辑 VC2 的代码。

【问题讨论】:

请分享您的代码 如果您不向我们展示代码,也不告诉我们“您的案例”是什么样的,您支持哪个 ios,那么我认为您将无法获得帮助。 为什么不显示 vc3 而不关闭,然后在最后关闭两者... VC2 自行解散,它不在我的控制范围内。 有上百万种方法可以做到这一点。完成块、委托方法、NSNotificationCenter 等,但在您开始具体告诉我们为什么这些东西不起作用之前,没有人可以帮助您。现在您已将代码编辑到问题中,您确定正在调用该方法吗? 【参考方案1】:

我知道我们总是将nil 用于完成块...但它确实有一些用处。我向你保证。

[self dismissViewControllerAnimated:YES completion:^
    //code to be executed with the dismissal is completed
    // for example, presenting a vc or performing a segue
    ];

【讨论】:

这个解决方案不久前对我有用,但在目前的情况下我不能使用完成块。 如果你不分享代码,我不知道如何帮助你,然后声称完成块不起作用,也不会解释原因。【参考方案2】:

这是我用来关闭 Facebook 登录视图控制器的一个。

UIViewController *theTrick = self.presentingViewController;
UIViewController *toPresent = [self.storyboard instantiateViewControllerWithIdentifier:@"toPresentViewController"];

[self dismissViewControllerAnimated:YES completion:^
    [theTrick presentViewController:toPresent animated:YES completion:nil];
];

【讨论】:

【参考方案3】:

感谢大家的帮助。在展示 VC3 之前添加一点延迟解决了这个问题。

-(void)onDismisLoginVC

[self performSelector:@selector(presentMessageVC) withObject:self afterDelay:1];



-(void)presentMessageVC


MessageVC *messageVC = [[MessageVC alloc] initWithNibName:@"MessageVC" bundle:nil];
[self.navigationController presentViewController:messageVC animated:YES completion:NULL];


【讨论】:

-performSelector:withObject:afterDelay: 如果您不将其用于真正特定的情况(您的问题不是那种情况),那就不好了。

以上是关于iOS - 在关闭其他视图控制器后立即呈现视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

ios 在关闭前一个视图控制器后立即显示视图控制器

视图控制器不会立即关闭并呈现新的视图控制器

在没有动画的情况下关闭视图控制器后立即呈现视图控制器

如何关闭模态视图控制器,然后立即让呈现视图控制器呈现不同的模态视图控制器?

在 IOS 6.0 中:底部工具栏中的 UIBarButton 在呈现和关闭模式视图控制器后消失

关闭模态视图控制器后呈现不同的视图控制器