viewDidLoad没有开火

时间:2015-01-29 01:49:29

标签: macos cocoa nsviewcontroller

全部,
我正在从我的applicationDidFinishLaunching方法创建一个windowController ...

(void)applicationDidFinishLaunching:(NSNotification *)aNotification {
   myWC = [[myWindowController alloc] initWithWindowNibName:@"myWindowControllerName"];

   [myWC showWindow:self];
}

此时,调用windowDidLoad方法。从那里,我调用该方法来加载viewController ...

(void)windowDidLoad {
    [super windowDidLoad];

    homeScreenVC = [[HomeScreen alloc] initWithNibName:@"HomeScreen" bundle:nil];

    [baseView addSubview:[homeScreenVC view]];
}

显示视图时,不会调用viewDidLoad方法。我尝试了viewDidAppear,但也没有调用。我也尝试在加载窗口后立即加载viewController,但也没有用。有任何想法吗?

任何帮助将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:2)

对于OSX您应该使用loadView


编辑: 您可以从homeScreenVC加载展示appDelegate

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification{
    homeScreenVC = [[HomeScreen alloc] initWithNibName:@"HomeScreen" bundle:nil];
    [self.window.contentView addSubview:self.homeViewController.view];
    homeScreenVC.view.frame = ((NSView*)self.window.contentView).bounds;
}

不要在此处加载视图,在加载视图时会调用此方法

-(void)loadView{
    [super loadView];
    //anything you want to do when home screen is presented
}

答案 1 :(得分:0)

对于 OSX viewDidLoad viewWillAppear 等进行调用。他们只是没有要求我使用viewController,我在那里使用WebView控件,但没有包含WebKit框架。因此,在添加框架后,这些方法再次开始调用就好了。