【问题标题】:viewDidLoad not firingviewDidLoad 没有触发
【发布时间】:2015-01-29 01:49:29
【问题描述】:

全部,
我正在从我的 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,但这也不起作用。有任何想法吗?

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

【问题讨论】:

    标签: macos cocoa nsviewcontroller


    【解决方案1】:

    对于 OSX 你应该使用loadView


    编辑: 您可以从appDelegate 加载您的节目homeScreenVC

    - (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
    }
    

    【讨论】:

    • @nempoBu4 viewDidLoad viewDidAppear 是 iOS 方法,在 OSX 中不可用。
    • 虽然确实调用了 loadView,但现在视图不会绘制。视图绑定到 nib 中的文件所有者。 @GoodSp33d,Apple 的文档说 viewDidLoad 在 OS 10.10 中可用,但我还没有从 10.9 升级,所以我应该先检查一下。
    • 获得了最终绘制的视图并调用了 loadView。谢谢你的回答!感谢大家的cmets
    【解决方案2】:

    对于 OSXviewDidLoadviewWillAppear 等会被调用。他们只是没有要求我使用我使用 WebView 控件但不包含 WebKit 框架的 viewController。所以,添加框架后,这些方法又开始正常调用了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-12
      相关资源
      最近更新 更多