首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可可辅导剂麻烦

可可辅导剂麻烦
EN

Stack Overflow用户
提问于 2012-06-07 18:24:13
回答 1查看 229关注 0票数 1

,这是 问题的翻版。

我很难掌握一些可可基金(特别是控制器和代表),所以我决定完成一个基本教程。我找到了一个‘你的第一个Mac应用’,一切顺利,直到"下一个在哪里“阶段。下面是一堆我不明白的大概基本的事情:

  • “创建一个新的控制器类,并将跟踪和用户界面从应用程序委托转移到这个新类。”

.创建一个单独的控制器类有什么意义?我得到了MVC模式,并在过去使用过它,我只是找不出单独的Controller和Delegate的位置。

  • “在nib文件中创建控制器类的实例,并与其建立适当的连接,而不是与应用程序委托进行连接。”

在这一点上,...Prior只是想创建一个NSWindowController的子类,然后在.xib文件中声明窗口应该是这个类的对象。现在我被淘汰了。控制器应该是哪一类的?它应该符合哪些接口(抱歉,协议)?如果它只是一个类,我指出的出路,然后再一次-有什么不同的代表,我已经有?

  • “添加从应用程序委托到新控制器对象的连接。当应用程序完成启动时,应用程序委托应该向控制器发送一条消息以显示窗口。”

.留言是什么?我发现的最接近的东西是showWindow: NSWindowController类中的消息,但是当我编写以下内容时:

代码语言:javascript
复制
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {

    [trackController showWindow:self];

}

在applicationDidFinishLaunching的AppDelegate方法中,它显示了错误“接收方类型‘'TrackController’--例如消息是一个前向声明‘,我只是不明白这意味着什么。

不仅如此,如果这个窗口没有任何代码显示在一个空白项目中,我为什么要发送一条消息来显示这个窗口呢?也许我应该以某种方式关闭这个默认行为,自己创建这个窗口的一个实例?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-08 00:35:32

控制器类的要点:在控制器和模型元素以及它们的用户界面之间保持一定的比率是很好的做法。对于简单的应用程序,您可以将所有代码放入AppDelegate中。一旦您开发了更复杂的应用程序,您将希望将代码从AppDelegate卸载到不同的控制器,并且您将有各种视图来维护您的模型。我试图在视图和控制器之间保持1:1的关系,以保持事务的可管理性。

控制器可以实现各种协议,以代表UI组件处理特定的功能位。然后,他们成为该组成部分的代表。例如,在您的视图中,您有一个NSTextView,您希望知道用户何时单击文本中的链接。然后,控制器可以实现<NSTextViewDelegate>并实现方法textView:clickedOnLink:atIndex:。通过这样做,它成为了您的NSTextView的代表。

控制器应该是哪一类的?有各种各样的控制器类可用于构造您的应用程序。我倾向于只使用NSViewController。该控制器能够处理显示在NSView中的NSWindow实例。NSView支持的视图层次结构允许您决定各种粒度场景(庞大、复杂的控制器或细粒度--这取决于您)。

有关前向声明问题,请参见这个职位

我不明白你最后一个问题是在显示窗口。显然,默认模板会生成一些管道代码来显示窗口。您可以使用该代码或滚动您自己的。如果我没正确理解你..。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10937622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档