2015-06-23 4 views
0

Я просто попробовал кое-что, используя делегаты View Controller и узнал об их функциях. Есть одна вещь, которую я хотел бы попробовать:UIViewController LifeCycle

Я написал функцию, которая автоматически разматывает viewController с помощью segues. Представления находятся внутри навигационного монитора. Кроме того, я установил экземпляр вар внутри моего назначения VC с помощью:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "unwindToRootSegue" { 
     let destinationController = segue.destinationViewController as! ViewController 
     destinationController.callLaunched = true 
    } 
} 

Затем я хотел бы проверить, если значение было установлено в пункте назначения VC. И подумал об использовании функции viewWillAppear. Но это не имеет никакого эффекта. Какой метод следует использовать для уведомления, когда изображение, которое я возвращаю назад (целевой VC сегмента), было загружено/показано для выполнения дальнейших действий.

Моя цель - выполнить действие, когда экземпляр var был установлен в true. Поэтому моя идея состояла в том, чтобы проверить экземпляр var, как только загрузилось представление назначения.

ответ

1

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

@IBAction func unwind(segue: UIStoryboardSegue) { 
    // unwind 
} 

Обратите внимание, что этот метод помещается в назначения контроллера вид. Контроллер просмотра разматывается.

От нас здесь не нужно segue, а вместо этого sourceViewController.

@IBAction func unwind(segue: UIStoryboardSegue) { 
    if let source = segue.sourceViewController as MySourceViewController { 
     self.someProperty = source.someOtherProperty 
    } 
} 

Но если мы просто хотим сделать что-то когда-то мы не раскручивать здесь ни на что, мы можем игнорировать segue вообще (похоже, что вы, по сути делать там думать, кроме нужна ссылка на destinationViewController) :

@IBAction func unwind(segue: UIStoryboardSegue) { 
    self.callLaunched = true 
} 
+0

спасибо nhgrif. И как мне узнать, что раскрутка завершена, поэтому я могу назвать другую функцию? – sesc360

+1

Это похоже на обычный переход. Это просто зависит. Если вы хотите, вы можете вызвать другой метод в рамках этого метода 'unwind'. Или вы можете подождать до 'viewWillAppear' или' viewDidAppear'. Просто зависит от того, что вы пытаетесь выполнить. Важно отметить, что 'viewDidLoad' не будет вызываться. – nhgrif