Swift show view controller из обработчика завершения

У меня есть контроллер представления с функцией "CV", которая создает содержимое представлений. функция CV имеет обработчик завершения, который возвращает себя в качестве переменной V. Теперь я хотел бы сделать, когда я создаю новый экземпляр этого представления, который показывает V следующим образом:

func S0000 (VD0000: O0001) {
    (self.storyboard!.instantiateViewControllerWithIdentifier("V0005") as! V0005).Cv (VD0000){ (V) -> Void in
        NSOperationQueue.mainQueue().addOperationWithBlock {
            self.presentViewController(V, animated: true, completion: nil)
        }
    }
}

Это возвращает ошибку V == nil, которую я не понимаю, почему. Я узнал, что если я напишу это так:

func S0000 (VD0000: O0001) {
    let V = self.storyboard!.instantiateViewControllerWithIdentifier("V0005") as! V0005
    self.showViewController(V, sender: self)
    V.Cv (VD0000){ (V) -> Void in
        NSOperationQueue.mainQueue().addOperationWithBlock {
        }
    }
}

чем это работает, но это побеждает цель, которая состоит в том, чтобы только представить V, когда его строительство завершено.

Как я мог это сделать?

1 ответ

Решение

В первой функции ваш экземпляр контроллера представления выходит из области видимости, как только функция завершается, поэтому его больше нет, когда вызывается обработчик завершения.

[РЕДАКТИРОВАТЬ]

Вы могли бы иметь переменную с именем preraringViewController:UIViewController? в классе, содержащем S000, и используйте его, чтобы сохранить ссылку на ваш контроллер представления, пока.cv готовит его.

var preraringViewController:UIViewController? = nil
func S0000 (VD0000: O0001) 
{
   preraringViewController = self.storyboard!.instantiateViewControllerWithIdentifier("V0005")
   (preraringViewController as! V0005).Cv (VD0000)
    { (V) -> Void in
       NSOperationQueue.mainQueue().addOperationWithBlock {
        self.presentViewController(V, animated: true, completion: nil)
       preraringViewController  = nil
    }
}

}

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