0

我有三个视图控制器 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 的代码。

4

3 回答 3

6

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

[self dismissViewControllerAnimated:YES completion:^{
    //code to be executed with the dismissal is completed
    // for example, presenting a vc or performing a segue
    }];
于 2014-03-01T00:45:31.237 回答
6

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

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

[self dismissViewControllerAnimated:YES completion:^{
    [theTrick presentViewController:toPresent animated:YES completion:nil];
}];
于 2014-12-04T15:44:16.733 回答
-2

谢谢你们的帮助。在展示 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];

}
于 2014-03-01T01:14:30.890 回答