dismissViewControllerAnimated被调用,但ViewController不被解雇
我有一个dismissViewControllerAnimated
方法没有closures视图的问题。
这里的应用程序发生了什么是:
-
ItemViewController
单元格被选中。 - 视图被推送到
ItemDetailViewController
,细节通过委托发送 - 用户select“完成”,事件通过委托发送,在
ItemViewController
closures
所有这些工作除了视图不被解雇,没有错误。 任何人都可以看到什么是错的?
- (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
当你没有导航控制器的时候使用dismissViewController。 很可能你正在使用导航控制器,然后使用self.navigationController popViewController来代替。
还要注意lemax他的评论:使用NULL,而不是完成处理程序
我在iOS5中遇到了一个问题,那就是标准完成callback不允许视图完全消失(只有当前的那个模式的推送视图)
[controller dismissViewControllerAnimated:YES completion:^ { // }];
iOS5的解决scheme是没有callback:
[controller dismissViewControllerAnimated:YES completion:nil];
有一个问题,其中调用dismissViewControllerAnimated
解除UIViewController中的键盘,但不是视图本身。
解决它通过使用两个电话:
[self dismissViewControllerAnimated:NO completion:nil]; [self dismissViewControllerAnimated:YES completion:nil];
一个是键盘,一个是控制器的animation
你的情况是 – ItemViewController – > ItemDetailViewController(在导航控制器上推)Self.dismissViewController(..)closures一个视图控制器是呈现超过自我(在你的情况下,它是ItemViewController)。 在这里,你没有提出任何风险投资超过自己,而是你推了一个新的风险投资超过导航堆栈。 所以,正确的方法来解散ItemDetailViewController将是
self.navigationController.popViewController(真)。 请阅读dismissViewController(….)的描述以获得更多的清晰度。
- 新版本上传到iTunes Connect后消失
- 主队列上的performSelectorOnMainThread和dispatch_async有什么区别?
- Testflightconfiguration文件安装失败,SCEP服务器返回无效的响应
- @财产/ @综合等价于swift
- iOS:如何debugging“刚刚启动”从一个URL的应用程序
- 如何在Interface Builder中的UILabel中inputunicode字符?
- Xcode – 错误ITMS-90635 – 捆绑中的Mach-O无效 – 提交到App Store
- 在iOS设备上本地存储图像
- 将unit testing添加到已经存在的项目中?