#ios #viewdidload
#iOS #viewdidload загрузить
Вопрос:
Кто-нибудь может подумать, почему эта строка кода [self.view insertSubview:dataInputController.view atIndex:0]; будет генерировать два сообщения viewDidLoad для dataInputViewController, за которыми следует одно viewWillDisappear и одно dealloc?
Я ожидал, что будет один viewDidLoad без viewDidDisappear или dealloc.
Ответ №1:
Возможно ли, что dataInputController.view
у него уже был супервизор? Это объяснило бы все вызовы.
Комментарии:
1. Я посмотрел на _parentViewController для dataInputController, и он равен нулю оба раза, когда вызывался viewDidLoad. Я заметил, что стек вызовов — это не то, что я ожидал. При первом вызове viewDidLoad стек выглядит следующим образом: main, UIApplicationMain, UINibInstantiateWithOwner, switchViewController, UIViewController, UINibInstantiateWithOwner, dataInputViewController. Во второй раз, когда вызывается viewDidLoad, стек выглядит следующим образом: main, UIApplicationMain, UINibInstantiateWithOwner, switchViewController, UIViewController, dataInputViewController. В стеке нет 2-го UINib!
2. Проверьте
[dataInputController.view superview]
непосредственно перед выполнением вставки.