调用 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.

我认为我的问题是 ma​​in.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的主要内容,如果未能解决你的问题,请参考以下文章

在几秒钟内多次调用 Healthkit 后台交付

在几秒钟内多次调用 Healthkit 后台交付

Firebase Google 登录 (iOS) - 从未调用过 GIDSignInUIDelegate 方法

执行由 UITableViewCell 调用的 Segue

从 Objc 超类继承的 Swift 子类中未调用 viewDidLoad

react-native app在启动屏幕上崩溃