我在这里寻求帮助!
我在swift中有一个ActionController,我试图从创建的一个动作中呈现一个UIImagePickerController,但是当我运行它时,它向我显示这个警告:尝试出现在< ...>它已经呈现(null),并且没有呈现任何内容。
这是我的代码:
let actionController = TweetbotActionController()
actionController.addAction(Action("Photo Library", style: .Default , handler: { action in
let picker = UIImagePickerController()
picker.sourceType = .PhotoLibrary
picker.allowsEditing = false
picker.delegate = self
self.presentViewController(picker, animated: true, completion: nil)
}))
actionController.addAction(Action("Take Photo", style: .Default, handler: {action in
NSLog("Take Photo Pressed")
}))
actionController.addSection(Section())
actionController.addAction(Action("Cancel", style: .Cancel, handler:nil))
presentViewController(actionController, animated: true, completion:nil)
非常感谢!!!
答案 0 :(得分:4)
错误消息非常自我解释。你不能同时出现两个视图控制器。
您应首先关闭AlertController
,然后再打开新的shouldOpenPicker
。为实现这一目标,您有多种选择,但我相信最简单的方法是在按下"照片库"时关闭AlertController。并在那里设置某种标志。这可以是名为completion
的变量,除非您按下按钮,否则它将始终为假。
然后,如果flag变量设置为{{{},则可以使用presentViewController
(显示AlertController的那个)的true
闭包来打开选择器控制器 。 1}}。如果是,则显示选择器控制器并再次将标志设置为false
。
<强>更新强>
在解散第一个视图控制器时,你应该出现第二个视图控制器,如下所示:
alert.addAction(UIAlertAction(title: "Photo library", style: .Default, handler: { action in
alert.dismissViewControllerAnimated(true, completion: {
let picker = UIImagePickerController()
picker.sourceType = .PhotoLibrary
picker.allowsEditing = false
picker.delegate = self
self.presentViewController(picker, animated: true, completion: nil)
})
}))