我是从另一个模态呈现ViewController。立即调用完成块,同时仍显示所呈现的VC。那为什么会这样?代码如下。
UIStoryboard* sb = [UIStoryboard storyboardWithName:...];
UINavigationController* nc = [sb instantiateViewController...];
nc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentViewController:nc
animated:YES
completion:^{ /* Called immediately! */ }];
只有当呈现的VC 完成时才会有我想做的事情。我有一个解决方法但我的理解是我应该能够在完成块中完成它。
答案 0 :(得分:0)
根据Apple的文档,一旦显示了viewController,就会调用完成块。这是预期的行为:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/index.html#//apple_ref/occ/instm/UIViewController/presentViewController:animated:completion:
我建议在viewController的viewWillDissappear中连接某种回调,以便在必要时执行操作。
答案 1 :(得分:0)
好的我有RTFM,看到了这个:“完成:演示完成后要执行的块。”哪个确实暗示了我的想法。充其量是暧昧的。
但是......其他地方我们读到“在显示的视图控制器上调用viewDidAppear:方法之后调用完成处理程序。”这是另一回事,并证实伊恩。
所以我的解决方法实际上是正确的方法......