加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – 从popover呈现视图

发布时间:2020-12-14 17:42:53 所属栏目:百科 来源:网络整理
导读:在我的应用程序中,用户可以按下tableviewcell,其中显示一个带有按钮的popover.按此按钮将显示导航视图控制器. DNWInfoViewController *infoViewController = [[DNWInfoViewController alloc] initWithInfoText:infoText]; UINavigationController *navContro
在我的应用程序中,用户可以按下tableviewcell,其中显示一个带有按钮的popover.按此按钮将显示导航视图控制器.

DNWInfoViewController *infoViewController = [[DNWInfoViewController alloc] initWithInfoText:infoText];
    UINavigationController *navController    = [[UINavigationController alloc] initWithRootViewController:infoViewController];
    navController.modalPresentationStyle     = UIModalPresentationFormSheet;
    [self presentViewController:navController animated:YES completion:nil];

但是从iOS 8开始,我收到此警告并且视图未显示:

Warning: Attempt to present <UINavigationController: 0x180e1dc0>  on <ANProjectFilterViewController: 0x16ec5cf0> which is already presenting (null)

这一定是因为popovercontroller仍在显示,所以我在呈现视图之前尝试了这个

[_ppvrController dismissPopoverAnimated:YES]; // This will not call the delegate

这种’修复’有效.但大多数时候它仍然显示警告,而不是我的观点.我尝试手动调用委托,但结果相同.

这曾经在iOS 7及更低版本中运行良好.如何从iOS 8中的popover呈现新视图?

编辑1

显示我发现了

dismissPopoverAnimated

由于某种原因在iOS 8中不起作用.通常,当用户从弹出窗口中选择一个项目时,会调用一个方法,该方法首先解除弹出窗口,然后执行一些自定义操作.在iOS 7中,弹出窗口在选择时消失,但在iOS 8中不会消失.

编辑2

那么实际触发警告的是这段代码:

[_ppvrController dismissPopoverAnimated:YES];

这段代码在方法中.从存在于弹出窗口内的按钮调用该方法.弹出窗口被成功解散的一半时间,但有时它只是打印警告,弹出窗口保持可见.

注意:此方法中没有其他代码.只有那一行来解雇popover.

解决方法

这似乎是iOS 8上的一个错误.我建议你 report it到Apple.与此同时,我读到其他人正在使用此解决方法:

[[NSOperationQueue mainQueue] addOperationWithBlock:^{
    [self presentViewController:yourNewNavigationController animated:YES completion:nil];
}];

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读