调用 AppDelgate 或 ViewController
Posted
技术标签:
【中文标题】调用 AppDelgate 或 ViewController【英文标题】:Either AppDelgate is called or ViewController is 【发布时间】:2015-09-30 11:40:08 【问题描述】:我希望 我的 AppDelegate 和我的 ViewController 在启动时被调用(如预期的那样)。
仅调用 ViewController 时:
main.c
int main(int argc, const char * argv[])
return NSApplicationMain(argc, argv);
当 AppDelegate 被调用而视图控制器未被调用时。
main.c
#import "AppDelegate.h"
int main(int argc, const char *argv[])
NSArray *tl;
NSApplication *application = [NSApplication sharedApplication];
[[NSBundle mainBundle] loadNibNamed:@"ViewController" owner:application topLevelObjects:&tl];
AppDelegate *applicationDelegate = [[AppDelegate alloc] init]; // Instantiate App delegate
[application setDelegate:applicationDelegate]; // Assign delegate to the NSApplication
[application run]; // Call the Apps Run method
return 0; // App Never gets here.
我认为我的问题是 main.c 的第二次尝试是......
NSApplication *application = [NSApplication sharedApplication];
[[NSBundle mainBundle] loadNibNamed:@"ViewController" owner:application topLevelObjects:&tl];
没有按预期工作。我在 IB 中实际在哪里设置“笔尖”?
怎么了?
【问题讨论】:
请阅读 Cocoa 编程介绍。 只有当你在默认运行循环上调用终止(你在上一行触发)时,应用程序才会返回点。默认应用程序运行循环就像一个 while (true) shouldIDoSomething。并简单地看一下github.com/drichardson/examples/blob/master/NiblessCocoaApp/…你就会知道如何正确地做到这一点。 【参考方案1】:你有这种困惑......你应该更仔细地看看我在这里的另一个答案:Other Answer
您的第一个 main.c 示例完全错误。您的第二个 main.c 更接近我给出的示例,但您调用 viewController 应该引用 MainMenu 笔尖,就像我的示例一样。
这一行是错误的:
[[NSBundle mainBundle] loadNibNamed:@"ViewController" owner:application topLevelObjects:&tl];
把NIB名称放在那里...这就是为什么方法参数被称为“loadNibNamed”:)-并去掉@“ViewController”。
现在,如果您想调用一个完整的 nib,那么您真的不需要我的示例。这是为那些真正想要几乎完全程序化的人设计的。
【讨论】:
以上是关于调用 AppDelgate 或 ViewController的主要内容,如果未能解决你的问题,请参考以下文章
Firebase Google 登录 (iOS) - 从未调用过 GIDSignInUIDelegate 方法