应用程序完成启动后,我的自定义viewcontroller未被调用

时间:2014-06-26 13:58:24

标签: objective-c macos cocoa

在我的Mac应用中,我有一个默认的GNAppDelegate和一个自定义的GNViewController。应用程序完成启动后,GNMainViewController将两个NSButton中的一个设置为非活动状态(使用方法setButtonStatus)。但是在我的情况下,应用程序完成启动后,GNMainViewController的setButtonStatus不会运行。如果我单击一个按钮,则应用程序将按预期开始工作。

在我的GNAppDelegate中,

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    [self.mainViewController setButtonStatus];
    NSLog(@"Appdelegate launched successful");
}

在我的GNMainViewController中,

- (void) setButtonStatus
{
    /* Some code here that I edited away for this post */  
}

GNAppDelegate第一次调用未运行的原因是什么?

更新

我在调用setButtonStatus后立即添加了一个日志语句。运行此日志记录语句,因此它之前的语句也必须运行。我的GNMainViewController的setButtonStatus方法也是正确的,因为我可以单击按钮来执行此操作。它只是appdelegate第一次调用未运行(或未产生预期结果)。

更新2

我尝试在这里添加初始化也没有成功。

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    self.mainViewController = [[GNMainViewController alloc] initWithNibName:@"MainMenu" bundle:nil];
    [self.mainViewController setButtonStatus];
    NSLog(@"App finished launching");
}

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)


在applicationDidFinishLaunching,它并不意味着你的mainViewController被创建/准备好调用setButtonStatus事件。 我认为您应该从mainViewController将viewButtonStatus添加到viewDidLoad。

答案 1 :(得分:0)

答案是输入-loadView而不是-applicationDidFinishedLaunching中的代码。事件序列是在-applicationDidFinishedLaunching之后加载NIB文件,因此会覆盖我以编程方式设置的内容。