2011-11-23 100 views
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"); 
} 

回答

5

如果你沒有nib文件,你應該實現loadView方法。請參閱視圖控制器編程指南的Custom View Controllers部分中的「以編程方式創建視圖」。如果你沒有實現這個方法,viewDidLoad將不會被調用。

+0

實際上_not_不實現該方法告訴iOS它應該從XIB文件加載。由於它不在那裏,視圖永遠不會被加載,因此viewDidLoad方法永遠不會被調用。 –

+0

只需加入 - (void)loadView {super loadView]; }到視圖控制器不起作用。我應該執行其他更改嗎? –

+0

你可以看到如何在鏈接中實現加載視圖,這裏是一個SO帖子http://stackoverflow.com/questions/5293976/how-to-implement-loadview – jbat100