"Предупреждение: попытка представить... на..., чье представление не..." при представлении дочернего элемента ВК -

Короче говоря, я представляю представление childVC, которое только что было добавлено в иерархию представлений, но, очевидно, оно еще не было добавлено в иерархию окон.

Я только начал этот проект и настроил его как страничный проект. Котел для UIPageViewController что было добавлено к включенному RootViewController является:

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    // Configure the page view controller and add it as a child view controller.
    self.pageViewController = UIPageViewController(transitionStyle: .Scroll, navigationOrientation: .Horizontal, options: nil)
    self.pageViewController!.delegate = self

    let startingViewController: CameraViewController = self.modelController.viewControllerAtIndex(0, storyboard: self.storyboard!)!
    let viewControllers = [startingViewController]
    self.pageViewController!.setViewControllers(viewControllers, direction: .Forward, animated: false, completion: {done in })

    self.pageViewController!.dataSource = self.modelController

    self.addChildViewController(self.pageViewController!)
    self.view.addSubview(self.pageViewController!.view) // !! -- viewDidAppear for CameraViewController called here

    // Set the page view controller's bounds using an inset rect so that self's view is visible around the edges of the pages.
    var pageViewRect = self.view.bounds
    if UIDevice.currentDevice().userInterfaceIdiom == .Pad {
        pageViewRect = CGRectInset(pageViewRect, 40.0, 40.0)
    }
    self.pageViewController!.view.frame = pageViewRect

    self.pageViewController!.didMoveToParentViewController(self)

    // Add the page view controller's gesture recognizers to the book view controller's view so that the gestures are started more easily.
    self.view.gestureRecognizers = self.pageViewController!.gestureRecognizers
}

Единственной строкой, которую я изменил, была установка моего собственного VC в качестве startingViewController:

 let startingViewController: CameraViewController = self.modelController.viewControllerAtIndex(0, storyboard: self.storyboard!)!

Я пытаюсь, чтобы на первом экране была камера - ImagePickerVC. Вот мой код для этого. Как видите, я добавляю UIImageView к этому CamerViewController чтобы показать предварительный просмотр, но я пытаюсь сначала представить UIImagePickerController на viewDidAppear:

import UIKit

class CameraViewController: UIViewController, UINavigationControllerDelegate, UIImagePickerControllerDelegate {
    @IBOutlet var imageView: UIImageView!

    @IBAction func didTapCameraButton(sender: AnyObject) {
        presentImagePicker();

    }

    var dataObject: AnyObject?

    var imagePicker: UIImagePickerController!  

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.        
    }

    override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(animated);

        presentImagePicker();
    }


    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func presentImagePicker() {
        imagePicker =  UIImagePickerController()
        imagePicker.delegate = self
        imagePicker.sourceType = .Camera

        presentViewController(imagePicker, animated: false, completion: { () -> Void in

            println("save bolean")
        })
    }


    func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) {
        imagePicker.dismissViewControllerAnimated(true, completion: nil)
        imageView.image = info[UIImagePickerControllerOriginalImage] as? UIImage
    }



}

Тем не менее, я получаю предупреждение и imagePicker никогда не представлен:

Warning: Attempt to present <UIImagePickerController: 0x14e833a00> on <Here.CameraViewController: 0x14e614af0> whose view is not in the window hierarchy!

Я установил контрольные точки и обнаружил, что viewDidAppear для CameraViewController вызывается в этой строке при добавлении PageViewController к RootViewController:

 self.view.addSubview(self.pageViewController!.view) // !! -- viewDidAppear for CameraViewController called here

Кажется, так и должно быть, но почему ошибка? Представление только что было добавлено, поэтому оно находится в иерархии представлений RootViewController.


Я также добавил кнопку, чтобы представить UIImagePickerController вручную из CameraViewController, Это представляет это найти без каких-либо проблем.

0 ответов

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