在我的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");
}
有人可以帮忙吗?
答案 0 :(得分:0)
在applicationDidFinishLaunching,它并不意味着你的mainViewController被创建/准备好调用setButtonStatus事件。
我认为您应该从mainViewController将viewButtonStatus添加到viewDidLoad。
答案 1 :(得分:0)
答案是输入-loadView
而不是-applicationDidFinishedLaunching
中的代码。事件序列是在-applicationDidFinishedLaunching
之后加载NIB文件,因此会覆盖我以编程方式设置的内容。