【发布时间】:2016-06-27 12:42:33
【问题描述】:
我在 Xcode 7.3 中使用 Swift 2.2 将 Delegate 分配给 PopoverPresentationController 时遇到问题
使用 Delegate 的原因是我试图在按下 Popover 视图(RedeemViewController 类)之外返回主菜单(MenuViewController 类)时触发一个函数。这在没有按钮的情况下发生。该函数存在于MenuViewController中,但与现在的作用无关,所以我只包括了发生错误的Delegation部分。
class MenuViewController: UIViewController, UIPopoverPresentationControllerDelegate {
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (sender as! UIButton == btnRedeem) {
let rvc = segue.destinationViewController as! RedeemViewController
let nav = UINavigationController(rootViewController: rvc)
let popover = nav.popoverPresentationController
popover!.delegate = self
}
}
}
按下按钮 btnRedeem,连接到 Segue 到 Popover 视图,RedeemViewController,导致
致命错误:在展开可选值时意外发现 nil
在 Xcode 中,调试器指向
popover!.delegate = self
Segue 存在并在故事板中命名。右键单击视图时没有警告或过时的引用。
将代码替换为
popover?.delegate = self
导致调试器在 AppDelegate 中停止的更一般的错误:
libc++abi.dylib:以 NSException 类型的未捕获异常终止
我查看了here,但没有任何可能的原因适用。我有一个通用的 AppDelegate.swift,如 here 所述。
任何帮助表示赞赏!我主要找到带有按钮的示例,但不想使用按钮退出 Popover,因为它不是必需的。
关于代表团的附加信息:我需要在后台运行的功能是
popoverPresentationControllerDidDismissPopover(popoverPresentationController: UIPopoverPresentationController)
检查 Popover 视图 (RedeemViewController) 何时退出以及我想要在其中触发的功能是显示一个新按钮的功能。
感谢您的阅读,也许您可以帮助我!
干杯,
弗洛里斯
【问题讨论】: