调用了dismissViewControllerAnimated但未关闭ViewController

2020/12/14 04:22 · ios ·  · 0评论

我在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

没有导航控制器时,将使用dismissViewController。很可能您正在使用导航控制器,然后使用self.navigationController popViewController代替。

还请注意lemax的说明:使用NULL,而不是nill作为完成处理程序

我在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(true)。请阅读dismissViewController(....)的描述以获得更多的清晰度。

本文地址:http://ios.askforanswer.com/diaoyongledismissviewcontrolleranimateddanweiguanbiviewcontroller.html
文章标签: ,   ,   ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!