【问题标题】:How to add app delegate back to mainwindow.xib如何将应用程序委托添加回 mainwindow.xib
【发布时间】:2012-02-09 06:40:48
【问题描述】:

简短回答:

从对象库中拖动一个对象并将其类设置为委托。

详情见下方答案。

我不小心从 mainwindow.xib 中删除了应用程序委托。我到处寻找,但仍然找不到将其添加回来的方法。我试图在网上找到它,但仍然没有结果。谁能帮我解决它?谢谢。

我的项目

别人的项目

Main.m

#import <UIKit/UIKit.h>

int main(int argc, char *argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, nil);
    }
}

【问题讨论】:

    标签: ios delegates xib nib


    【解决方案1】:

    通常您的 AppDelegate 不会在任何 .xib 文件中被引用。相反,您的 main.m 将实例化 AppDelegate 的一个实例(通过 UIApplicationMain 函数),然后您的 AppDelegate 将实例化一个或多个视图控制器,这反过来将取消归档一些基于 .xib 文件的视图。

    main.m 中您的应用程序的入口点,您的 AppDelegate 被实例化并启动您的应用程序,应该如下所示(如果您的应用程序委托具有不同的类名,请使用它而不是 AppDelegate

    int main(int argc, char *argv[])
    {
        @autoreleasepool {
            return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
        }
    }
    

    ...但是如果你的应用程序有一个 MainWindow.xib,上面的都是不正确的,你确实想在 MainWindow.xib 中创建你的 AppDelegate 的实例。为此,只需将通用对象从对象库中拖到 IB 的对象区域中,然后转到身份检查器并将类字段设置为您的 App Delegate 的类名。 (您可以从 View/Utilities 访问 Object Library 和 Identity Inspector。

    【讨论】:

    • 谢谢@yuji,那我该怎么做才能恢复呢?
    • 我很困惑——由于您的应用程序委托“缺席”,您无法做什么具体是什么?我说“缺席”是因为它通常不会被 mainwindow.xib 首先引用。
    • 感谢您的快速回复,我上传了一张图片。我的问题是如何将 appdelegate 添加到 nib。
    • 您不应该这样做:如果这样做,您将创建 AppDelegate 类的新实例,而不是连接到应用程序的实际 AppDelegate 实例。如果你真的想在视图控制器中引用你的AppDelegate,这个问题:stackoverflow.com/questions/2710062/… 会告诉你 1)如何以编程方式进行,2)为什么这样做不是很好的 MVC。
    • 感谢@yuji,实际上我将其更改为 nil 因为我尝试关注其他项目。现在我把它改回来,在 mainwindow.xib 中仍然看不到 PushBizAppDelegate。由于我没有 appdelegate,因此无法将其类设置为 MyAppDelegate,也无法将其链接到文件所有者。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多