Я хотел бы использовать решение, предоставленное Трэвисом М. на этот вопрос: Как использовать закрытие всплывающего окна iPhone в адаптивной раскадровке
Однако мне нужно, чтобы приведенное ниже было переведено в цель c.
Кто-нибудь может помочь?
Если вам нужно всплывающее окно на вашем iPad, но модальный лист с кнопкой закрытия на вашем iPhone, вы можете сделать это, не создавая дополнительный навигационный контроллер в раскадровке для всплывающего окна.
В раскадровке Xcode 6.3 вы просто подключаете контроллер представления и назначаете переход как «Представить как всплывающее окно».
Приведенный ниже код должен находиться в контроллере представления, который переходит к всплывающему меню, а не в самом всплывающем окне:
Сначала вы настраиваете делегат 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)
}