如何将应用程序委托添加回 mainwindow.xib

Posted

技术标签:

【中文标题】如何将应用程序委托添加回 mainwindow.xib【英文标题】:How to add app delegate back to 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);
    

【问题讨论】:

【参考方案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,这个问题:***.com/questions/2710062/… 会告诉你 1)如何以编程方式进行,2)为什么这样做不是很好的 MVC。 感谢@yuji,实际上我将其更改为 nil 因为我尝试关注其他项目。现在我把它改回来,在 mainwindow.xib 中仍然看不到 PushBizAppDelegate。由于我没有 appdelegate,因此无法将其类设置为 MyAppDelegate,也无法将其链接到文件所有者。

以上是关于如何将应用程序委托添加回 mainwindow.xib的主要内容,如果未能解决你的问题,请参考以下文章

响应者链但不是委托属性将值从容器传递回视图控制器

如何将现成的项目(使用应用程序委托创建和启动但没有 xib、nib)添加到另一个项目

如何将 nginx 位置添加回 302 重定向响应位置

如何使用委托给 self 调用 presentViewController?

添加了传递数据的委托,现在抛出错误类不符合键值编码?

如何在应用列标题背景后添加回排序箭头