[英]Why can't my UITableView load the detailView? - loadView and viewDidLoad are not called
[英]viewDidLoad not called when using loadView
任何人都可以解釋為什么在使用loadView時不會調用viewDidLoad? 我的理解是viewDidLoad應該仍然被調用。
- (void)loadView
{
CGRect currentFrame = [[UIScreen mainScreen] applicationFrame];
UIView* myView = [[UIView alloc] initWithFrame:CGRectMake(currentFrame.origin.x, currentFrame.origin.y, currentFrame.size.width, currentFrame.size.height)];
myView.backgroundColor = [UIColor redColor];
self.view = myView;
[myView release];
[super loadView];
}
- (void)viewDidLoad {
//this never happens
NSLog(@"VIEW DID LOAD!");
[super viewDidLoad];
}
我剛剛發現,如果在應用程序中手動調用loadView,則不會調用viewDidLoad。 如果手動調用loadView,則還必須手動調用viewDidLoad。
根據apple docs,您不應該調用[super loadView],因為它會使用默認的UIView覆蓋您的視圖。
你必須在這里發出警告:
NSLog("VIEW DID LOAD!");
相反,你應該寫這樣(@符號是必要的):
NSLog(@"VIEW DID LOAD!");
創建ViewController實例時,不會調用viewDidLoad。 當您將其推送到導航控制器或將其作為模型視圖控制器呈現時,只會調用viewDidLoad。 除非您呈現viewController,否則這些委托將不會被調用。 還有一件事,如果你的viewcontroller表示結束,但它仍然保留在堆棧或內存中,那么viewDidLoad方法將不再被調用,因為它已經加載了視圖。 然后,只有在呈現相同的viewController時才會調用viewWillAppear和viewDidAppear委托。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.