3
我一直是這個網站很長一段時間的大粉絲,但這是我第一個發佈的問題。viewDidLoad不工作(沒有NIB)
我已閱讀每個類似主題(我認爲)的帖子,但他們都使用NIB文件。 我的項目中的任何地方都沒有nib文件。
這是一個具有一個視圖的簡單項目(這意味着一個委託類,一個uiviewcontroller類和一個uiview類),並且我的視圖顯示正常,但viewDidLoad方法從不調用。
main.m文件看起來是這樣的:
int main(int argc, char *argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, @"MyAppDelegate");
[pool release];
return retVal;
}
MyAppDelegate.m看起來是這樣的:
-(void)applicationDidFinishLaunching:(UIApplication *)application{
UIWindow *localWindow = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window = localWindow;
[localWindow release];
MainViewController *viewController = [[MainViewController alloc] init];
//Option 1
navigationController = [[UINavigationController alloc] initWithRootViewController:viewController];
////Option 2
//navigationController = [[UINavigationController alloc] init];
//navigationController.viewControllers = [NSArray arrayWithObject:viewController];
////Option 3
//navigationController = [[UINavigationController alloc] init];
//[navigationController pushViewController:viewController animated:NO];
[window addSubview:navigationController.view];
[window makeKeyAndVisible];
[viewController release];
}
在MainViewController.m
- (id)init {
self = [super init];
if (self) {
self.title = @"Root";
MainView *myView = [[MainView alloc] init];
[myView initWithParentViewController:self];
self.view = myView;
[myView release];
}
return self;
}
最後,在「MainViewController.m 「,這永遠不會被解僱(但顯示視圖):
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"VIEW DID LOAD");
}
實際上_not_不實現該方法告訴iOS它應該從XIB文件加載。由於它不在那裏,視圖永遠不會被加載,因此viewDidLoad方法永遠不會被調用。 –
只需加入 - (void)loadView {super loadView]; }到視圖控制器不起作用。我應該執行其他更改嗎? –
你可以看到如何在鏈接中實現加載視圖,這裏是一個SO帖子http://stackoverflow.com/questions/5293976/how-to-implement-loadview – jbat100