【发布时间】:2015-12-01 00:42:18
【问题描述】:
我有一个带有 3 个 UIButtons 的工具栏的视图控制器,可以打开一个新的视图控制器作为弹出框。我在 Storyboard 中创建了 segues 并选择了“Present as Popover”。弹出框工作,但是当用户在弹出框当前打开时点击另一个按钮时,我收到此错误:
Warning: Attempt to present <Fingerpainter.OpacityViewController: 0x79095110> on <Fingerpainter.DrawingViewController: 0x7b278000> which is already presenting <Fingerpainter.BrushSizeViewController: 0x79573770>
有没有办法确保在打开新的弹出框之前关闭所有弹出框?这是我在主 ViewController(包含工具栏)中的 prepareForSegue 方法:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let identifier = segue.identifier ?? ""
let popoverPresentationController = segue.destinationViewController.popoverPresentationController
popoverPresentationController!.delegate = self
switch identifier {
case Storyboard.BrushSizeSegueIdentifier:
if let brushSizeViewController = popoverPresentationController?.presentedViewController as? BrushSizeViewController {
// set properties in brushSizeViewController
}
case Storyboard.OpacitySegueIdentifier:
if let opacityViewController = popoverPresentationController?.presentedViewController as? OpacityViewController {
//set properties in opacityViewController
}
case Storyboard.ColorSegueIdentity:
if let colorViewController = popoverPresentationController?.presentedViewController as? ColorViewController {
//set properties in colorViewController
}
default:
break
}
}
【问题讨论】:
标签: swift uiviewcontroller ios9 swift2.1