警告:尝试在&lt; ...&gt;上显示<uiimagepickercontroller:>已经呈现(null)

时间:2016-07-26 01:12:57

标签: swift

我在这里寻求帮助!

我在swift中有一个ActionController,我试图从创建的一个动作中呈现一个UIImagePickerController,但是当我运行它时,它向我显示这个警告:尝试出现在&lt; ...&gt;它已经呈现(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)

非常感谢!!!

1 个答案:

答案 0 :(得分:4)

错误消息非常自我解释。你不能同时出现两个视图控制器。

您应首先关闭AlertController,然后再打开新的shouldOpenPicker。为实现这一目标,您有多种选择,但我相信最简单的方法是在按下&#34;照片库&#34;时关闭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)
    })
}))