【问题标题】:Connecting App Delegate to Controller Class将 App Delegate 连接到控制器类
【发布时间】:2012-03-28 21:10:58
【问题描述】:

我被困在开发 XCode 应用程序的这一步:https://developer.apple.com/library/mac/#documentation/General/Conceptual/Mac101/Articles/07_WhereNext.html

我感到困惑的是最初在 XCode 4 中创建项目时默认创建的 AppDelegate 类的角色。如果我实现自定义控制器,让我们使用上面的示例链接并将其命名为 TrackController。我是否将该控制器设为应用程序委托?看来我读过的任何教程都不是很清楚。

那么,在 AppDelegate 中,我是否在此处创建控制器类的新实例?如果是这样,我要不要在这里连接插座?还是我将文件的所有者更改为控制器类?如果是这样的话,那么在 XCode 4 中是如何做到的?

我知道这不是一个非常明确的问题,但我确信有人知道我在说什么。

编辑

以下屏幕截图显示了我的意思。蓝色框现在是“Track Controller”。在这种情况下,我已经展示了 AppDelegate 类,但为了清楚起见。我使用什么,AppDelegate.m 或 TrackController.m?应该怎么做?

编辑 2

回到这一点,我已经uploaded the code to GitHub here,因为我还没有弄清楚如何连接所有东西。

重新解释一下,我需要弄清楚 AppDelegate 和 TrackController 如何相互关联和通信。这些概念对我来说通常是新的,我已经阅读了 Apple 文档,但它们并没有真正帮助我。我什至与专家进行了深入讨论,但我仍然看不出它应该如何工作。

我的模型是 Track,然后我有 TrackController,当然还有 AppDelegate。 AppDelegate 正在实例化 TrackController,我希望它能够打开它的窗口。

我做错了什么?希望高手能帮帮我!

【问题讨论】:

    标签: objective-c xcode4


    【解决方案1】:

    它描述的是应用程序委托应该专注于处理发送到应用程序的委托调用。

    您实际上创建了一个新类来充当应用程序的主控制器,然后添加代码以在应用程序完成加载时调用它。从那时起,该应用程序(据说)是您的主要控制点(当然,当它“移交”给另一个班级时除外)。

    我比 Mac 更熟悉该过程在 iOS 上的工作方式,Mac 必须担心 Windows,但对于 iOS 应用程序,您需要添加代码以从 ApplicationDidFinishLaunching:WithOptions: 中调用起始视图控制器。从那里,视图控制器起飞,查看整个过程的最简单方法是从视图控制器开始(实际上,大多数教程都是这样处理它的,实际上,让 XCode 处理应用程序委托创建该视图控制器的事实)。

    【讨论】:

    • 在 XCode 中有一个蓝色框,您可以在其中设置 Interface Builder 的类。如果我将其设置为我的控制器,那么这是否意味着它将使用控制器?
    • 我不知道你在说什么蓝框,唉。由于您正在开发 Mac 应用程序,因此您可能会获得与我不同的控件。还有数量众多的控件,让您很难确定您可以谈论哪一个。
    • 蓝色立方体代表你的类的一个实例。当您开始一个项目时,IB 中将有一个用于默认应用程序委托类。如果您添加一个新类,如 TrackController,并且您需要将该类的实例连接到 UI 元素,那么您拖出一个新的蓝色立方体并将其类更改为 TrackController。通常,您主要将应用程序委托类用于 ApplicationDelegate 协议中的方法,并且可能用于一些初始设置或调用其他类以启动它们。
    • Ctrl+将一个蓝色立方体从对象列表拖到主 UI 上?
    • 对于窗口或视图的控制器,我通常只是将“文件所有者”的类型更改为窗口控制器类,因为我总是从控制器实例化 nib 并使其成为所有者(通过[super initWithWindowNibName:@"TheNibName"] 在控制器的 init 中)。当您在 IB 中创建对象时,请记住您实际上是在 nib 文件本身中创建该对象的(序列化)实例,而不是对一个对象的引用。所以你只想在 IB 中为你想通过加载 nib 实例化的东西创建新的自定义对象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-02
    • 2016-10-30
    • 1970-01-01
    相关资源
    最近更新 更多