我在Interface Builder中为我的StoryBoard Segue选择了Present as Popover
。
如何在prepareForSegue
中引用UIPopoverController?
我试过这样,但它不在if语句中。
if segue is UIStoryboardPopoverSegue {
let popoverSegue = segue as UIStoryboardPopoverSegue
simpleTableViewController.popoverController = popoverSegue.popoverController
}
如果你需要popovercontroller,只是为了解雇它,那么解雇自适应视图控制器的方法是:
self.dismissViewControllerAnimated(true, completion: nil)
答案 0 :(得分:7)
使用自适应segue Present作为Popover:
要获得iOS 7上UIPopoverController
的引用,您需要检查segue class
中的prepareForSegue
,看看它是否为UIStoryboardPopoverSegue
。如果是,请通过popoverController
属性访问popover。如果您需要在该视图控制器中将其关闭,请将其存储在目标视图控制器中。
对于iOS 8,UIPopoverController
已不复存在,已被UIPopoverPresentationController
取代。您可以通过popoverPresentationController
直接在视图控制器中访问它,您可以通过dismissViewControllerAnimated
轻松解除弹出窗口。
因此,当使用自适应segue时,如果您在iOS 7上运行应用程序,则segue类将为UIStoryboardPopoverSegue
,而在iOS 8上将为UIStoryboardPopoverPresentationSegue
。您不需要使用旧的已弃用的popover segue,它非常简洁,自适应segue会自动转换为旧API,以便向后兼容Universal Storyboards。
答案 1 :(得分:0)
你不应该检查segue的类型,而应该检查segue标识符。
if segue.identifier == "popover" {
let popoverSegue = segue as UIStoryboardPopoverSegue
simpleTableViewController.popoverController = popoverSegue.popoverController
}