2011-10-28 170 views
2

有人能想到为什么这行代码为 [self.view insertSubview:dataInputController.view atIndex:0]; 会生成两个viewDidLoad消息到dataInputViewController,然后是一个viewWillDisappear和一个dealloc?two viewDidLoad messages when only one expected

我预计没有viewDidDisappear或dealloc的单个viewDidLoad。

回答

0

dataInputController.view可能已经有一个超级视图吗?这将解释所有电话。

+0

我查看了dataInputController的_parentViewController,并且调用了两次viewDidLoad。我确实注意到调用堆栈并不是我所期望的。第一次调用viewDidLoad时,堆栈看起来像这样 - main,UIApplicationMain,UINibInstantiateWithOwner,switchViewController,UIViewController,UINibInstantiateWithOwner,dataInputViewController。第二次viewDidLoad被称为堆栈看起来像这样 - main,UIApplicationMain,UINibInstantiateWithOwner,switchViewController,UIViewController,dataInputViewController。没有第二个UINib在堆栈中! – user990380

+0

在插入之前检查'[dataInputController.view superview]'。 –

相关问题