【问题标题】:iOS 8: Storyboard - Delegate for UIPopoverControlleriOS 8:故事板 - UIPopoverController 的委托
【发布时间】:2015-01-14 17:13:19
【问题描述】:

从单个视图控制器应用程序模板开始。我在主视图控制器和第二个视图控制器上添加了一个按钮,然后我将该按钮附加到第二个视图控制器上,故事板 segue 显示为一个弹出框。

遗憾的是,发送到prepareForSegue:sender: 方法的segue 不是UIStoryboardPopoverSegue。是否可以将代表附加到故事板 segue 的弹出框?

class ViewController: UIViewController, UIPopoverControllerDelegate {

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if let popoverSegue = segue as? UIStoryboardPopoverSegue {
            popoverSegue.popoverController.delegate = self
        }

    }

    func popoverControllerDidDismissPopover(popoverController: UIPopoverController) {
        println("dismissed")
    }
}

【问题讨论】:

    标签: swift ios8 uistoryboardsegue


    【解决方案1】:

    最近遇到了同样的问题。在 iOS 8 中,您可以通过destinationViewController 的popoverPresentationController 访问UIPopoverPresentationController 并设置UIPopoverPresentationControllerDelegate(而不是UIPopoverController 和-Delegate),使用以下代码:

    override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
        if let controller = segue.destinationViewController as? UIViewController {
            controller.popoverPresentationController.delegate = self
        }
    }
    

    【讨论】:

    • 这个答案很好!
    • 有同样的问题,但对我不起作用:/这可能是什么原因?顺便说一句,我必须在 popoverPresentationController 之后使用感叹号,否则它不会设置委托。结果我得到了错误 EXC_BREAKPOINT
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-13
    • 2012-02-17
    • 1970-01-01
    • 2021-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多