【发布时间】:2016-03-19 01:12:40
【问题描述】:
我想使用 Travis M. 提供的解决方案来解决这个问题: How to use dismiss an iPhone popover in an Adaptive Storyboard
但是,我需要将以下内容翻译为目标 c。
有人可以帮忙吗?
如果您想要的是 iPad 上的弹出框,但 iPhone 上带有关闭按钮的模态表,那么您无需在情节提要中为弹出框创建额外的导航控制器即可。
在 Xcode 6.3 故事板中,您只需连接一个视图控制器并将 segue 指定为“Present as Popover”
下面的代码应该放在与弹出框相关的视图控制器中,而不是弹出框本身:
首先您设置弹出框委托:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (segue.identifier == "myPopoverSegueName") {
let vc = segue.destinationViewController
vc.popoverPresentationController?.delegate = self
return
}
}
然后添加委托扩展(在视图控制器的代码下方)并动态创建导航控制器/关闭按钮:
extension myViewController: UIPopoverPresentationControllerDelegate {
func presentationController(controller: UIPresentationController, viewControllerForAdaptivePresentationStyle style: UIModalPresentationStyle) -> UIViewController? {
let btnDone = UIBarButtonItem(title: "Done", style: .Done, target: self, action: "dismiss")
let nav = UINavigationController(rootViewController: controller.presentedViewController)
nav.topViewController.navigationItem.leftBarButtonItem = btnDone
return nav
}
}
然后添加委托扩展(在视图控制器的代码下方)并动态创建导航控制器/关闭按钮:
extension myViewController: UIPopoverPresentationControllerDelegate {
func presentationController(controller: UIPresentationController, viewControllerForAdaptivePresentationStyle style: UIModalPresentationStyle) -> UIViewController? {
let btnDone = UIBarButtonItem(title: "Done", style: .Done, target: self, action: "dismiss")
let nav = UINavigationController(rootViewController: controller.presentedViewController)
nav.topViewController.navigationItem.leftBarButtonItem = btnDone
return nav
}
}
然后你添加你的解雇功能,你应该很高兴:
func dismiss() {
self.dismissViewControllerAnimated(true, completion: nil)
}
【问题讨论】:
标签: ios objective-c swift popover