我遇到了dismissViewControllerAnimated
方法没有关闭视图的问题。
这里的应用程序发生了什么:
ItemViewController
中的单元格。ItemDetailViewController
,详细信息通过代理人发送ItemViewController
所有这些工作除了视图没有被解雇,没有错误。任何人都可以看到有什么问题吗?
- (void)itemDetailViewControllerDidFinish:(ItemDetailViewController *)controller
{
NSLog(@"Controller: %@", controller);
// Returns - Controller: <ItemDetailViewController: 0x6b68b60>
[self dismissViewControllerAnimated:YES completion:nil];
}
答案 0 :(得分:66)
如果您拨打[controller.navigationController popViewControllerAnimated:YES]
,该怎么办?
就此而言,如果你打电话给[controller dismissViewControllerAnimated:YES completion:nil]
而不是自己打电话怎么办?
答案 1 :(得分:10)
答案在此页面中: dismissviewcontrolleranimated-vs-popviewcontrolleranimated
当您没有navigationcontroller时使用dismissViewController。 很可能你正在使用导航控制器,然后使用 而不是self.navigationController popViewController。
另请注意lemax他的评论:使用NULL,而不是nill for completionhandler
答案 2 :(得分:4)
我在iOS5中遇到了一个问题,标准的完成回调不允许视图完全解散(只有该模态的当前推送视图)
[controller dismissViewControllerAnimated:YES completion:^ {
//
}];
iOS5解决方案是没有回调:
[controller dismissViewControllerAnimated:YES completion:nil];
答案 3 :(得分:4)
问题是调用dismissViewControllerAnimated
解除了UIViewController中的键盘,而不是视图本身。
使用两个电话解决了这个问题:
[self dismissViewControllerAnimated:NO completion:nil];
[self dismissViewControllerAnimated:YES completion:nil];
键盘的瞬间,然后是控制器的动画
答案 4 :(得分:0)
你的情况是 - ItemViewController - &gt; ItemDetailViewController (推送导航控制器) Self.dismissViewController(..)关闭一个通过self呈现的视图控制器(在大多数情况下它是ItemViewController)。在这里,你没有提供任何VC而不是自我,而是你在导航堆栈上推送了一个新的VC。因此,解除ItemDetailViewController的正确方法是
self.navigationController.popViewController(真)。请阅读dismissViewController(....)的说明以获得更清晰的信息。