![](/img/trans.png)
[英]viewDidAppear called on a viewcontroller which is being dismissed in iOS8
[英]dismissViewControllerAnimated is called but ViewController is not dismissed
我遇到了dismissViewControllerAnimated
方法没有关闭视图的问题。
这里的应用程序发生了什么:
ItemViewController
单元格。 ItemDetailViewController
,细节通过委托发送 ItemViewController
关闭 所有这些工作除了视图没有被解雇,没有错误。 任何人都可以看到有什么问题?
- (void)itemDetailViewControllerDidFinish:(ItemDetailViewController *)controller
{
NSLog(@"Controller: %@", controller);
// Returns - Controller: <ItemDetailViewController: 0x6b68b60>
[self dismissViewControllerAnimated:YES completion:nil];
}
如果你调用[controller.navigationController popViewControllerAnimated:YES]
怎么办?
那么,如果你调用[controller dismissViewControllerAnimated:YES completion:nil]
而不是自己调用它会怎么样?
答案在此页面中: dismissviewcontrolleranimated-vs-popviewcontrolleranimated
当您没有navigationcontroller时,将使用dismissViewController。 很可能你正在使用导航控制器,然后使用self.navigationController popViewController。
另请注意lemax他的评论:使用NULL,而不是nill用于completionhandler
我在iOS5中遇到了一个问题,标准完成回调不允许视图完全解除(只有当前推送的该模态视图)
[controller dismissViewControllerAnimated:YES completion:^ {
//
}];
iOS5的解决方案是没有回调:
[controller dismissViewControllerAnimated:YES completion:nil];
有一个问题,调用dismissViewControllerAnimated
解除了UIViewController中的键盘,但不是视图本身。
通过使用两个调用解决它:
[self dismissViewControllerAnimated:NO completion:nil];
[self dismissViewControllerAnimated:YES completion:nil];
键盘的瞬间,然后是控制器的动画
你的情况是 - ItemViewController - > ItemDetailViewController(推送在navigationController上)Self.dismissViewController(..)解除一个通过self呈现的视图控制器(在你的情况下它是ItemViewController)。 在这里,你没有提供任何VC而不是自我,而是你在导航堆栈上推送了一个新的VC。 所以,正确的解雇ItemDetailViewController的方法就是
self.navigationController.popViewController(真)。 请阅读dismissViewController(....)的说明以获得更清晰。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.