UIPopoverPresentationController 中的视图委托没有响应
Posted
技术标签:
【中文标题】UIPopoverPresentationController 中的视图委托没有响应【英文标题】:delegate of view in UIPopoverPresentationController not reponding 【发布时间】:2014-10-24 08:20:17 【问题描述】:我在这里有点麻烦。我有一个为 ios7.1 编写的应用程序,我们现在正在尝试使相同的应用程序支持 ios 8.1。
在这个应用程序中,我们有几个弹出框。我已经完成了让它们在 iOS8 中正确显示为弹出框的修复,但是当我单击弹出框时,它没有按预期响应。
这是它的呈现方式(全部连接在故事板中):
在 DashboardViewController 中:
if ([segue.identifier isEqualToString:@"showRHSMenu"])
_rightNavController = segue.destinationViewController;
_rightNavController.preferredContentSize = CGSizeMake(220, (_rightNavController.tableView.rowHeight * _rightNavController.dataArray.count));
_rightNavController.modalPresentationStyle = UIModalPresentationPopover;
UIPopoverPresentationController *popoverPresentationController = _rightNavController.popoverPresentationController;
popoverPresentationController.delegate = self;
在 _rightNavController 中,声明了一个与 DashboardViewController 通信的协议。这工作并在 ios7.1 中使用 UIPopoverController 执行,但在 iOS8.1 中使用 UIPopoverPresentationController,它不会触发。
我已经确认用户点击了 rightNavController 中的注册,但是协议/委托没有被执行。
有人可以帮忙吗?
【问题讨论】:
【参考方案1】:一个老问题,但希望这对其他人有帮助。
我今天遇到了同样的问题,解决方案是将弹出控制器声明为实例变量而不是局部变量。作为一个局部变量,它在方法返回后的任何时候都会被垃圾回收,无论弹出视图是否仍在屏幕上。 (垃圾收集在 iOS8 中似乎更加激进/高效,因此很可能只是暴露了您已经拥有的错误。)保持视图控制器的句柄直到视图被关闭,并且所有委托方法都应该可以正常工作。
【讨论】:
以上是关于UIPopoverPresentationController 中的视图委托没有响应的主要内容,如果未能解决你的问题,请参考以下文章