Как показать viewcontroller: UIImagePickController и отклонить его (Swift)

Я получил этот uiactionsheet, который загружает uipickerviewcontroller его в viewcontroller, который в UISplitViewController

Это UIsplitviewcontroller, этот код находится в подробном представлении, подробный вид вызывается из masterview

как бы то ни было, когда я пытаюсь загрузить его, "нажмите на него", он выдает мне предупреждение и больше не идет

   func actionSheet(actionSheet: UIActionSheet!, clickedButtonAtIndex buttonIndex: Int){
    var imagePicker = UIImagePickerController()
    imagePicker.delegate = self

    switch buttonIndex{

    case 0:
        imagePicker.sourceType = UIImagePickerControllerSourceType.SavedPhotosAlbum
        imagePicker.allowsEditing = true
        imagePicker.delegate = self
        NSLog("Vælg fra Biblioteket");
        break;
    case 1:
        imagePicker.sourceType = UIImagePickerControllerSourceType.Camera
        imagePicker.allowsEditing = true
        imagePicker.delegate = self
        NSLog("Vælg Kamera");
        break;
    default:
        NSLog("Default");
        break;
    }
    self.presentViewController(imagePicker, animated: true, completion: nil) // this is the problem 
}

предупреждение таково: Предупреждение: попытка представить на котором уже присутствует (ноль)

как бы то ни было, если я использую это: self.showDeatilViewController (imagePicker, true), оно появляется, но тогда я не могу его вообще отклонить

вот как я думал, что это будет отклонено

    func imagePickerControllerDidCancel(picker: UIImagePickerController) {

    picker.dismissViewControllerAnimated(true, completion: nil)
}

Если я запускаю этот код в viewDidLoad, он работает

        var imagePickerController = UIImagePickerController()
    imagePickerController.delegate = self
    imagePickerController.sourceType = UIImagePickerControllerSourceType.SavedPhotosAlbum
    imagePickerController.allowsEditing = true
    self.presentViewController(imagePickerController, animated: true, completion: { imageP in

    })

Я понял, что если я напишу это:

        self.presentedViewController?.presentViewController(imagePicker, animated: true, completion: nil)

это показывает и закрывает?!?!

1 ответ

Решение

У меня это работает... кто-то обратил мое внимание на то, что в 8.0 IOS есть ошибка с открытием фотолиберии и тому подобного из приложений... поэтому я поместил его в основную очередь вот так

dispatch_async(dispatch_get_main_queue()){
        imagePicker.delegate = self
        self.presentViewController(imagePicker, animated: true, completion: nil)
    }

и теперь это работает!

небольшая задержка, но это работает

Другие вопросы по тегам