,这是 这 问题的翻版。
我很难掌握一些可可基金(特别是控制器和代表),所以我决定完成一个基本教程。我找到了一个‘你的第一个Mac应用’,一切顺利,直到"下一个在哪里“阶段。下面是一堆我不明白的大概基本的事情:
.创建一个单独的控制器类有什么意义?我得到了MVC模式,并在过去使用过它,我只是找不出单独的Controller和Delegate的位置。
在这一点上,...Prior只是想创建一个NSWindowController的子类,然后在.xib文件中声明窗口应该是这个类的对象。现在我被淘汰了。控制器应该是哪一类的?它应该符合哪些接口(抱歉,协议)?如果它只是一个类,我指出的出路,然后再一次-有什么不同的代表,我已经有?
.留言是什么?我发现的最接近的东西是showWindow: NSWindowController类中的消息,但是当我编写以下内容时:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
[trackController showWindow:self];
}在applicationDidFinishLaunching的AppDelegate方法中,它显示了错误“接收方类型‘'TrackController’--例如消息是一个前向声明‘,我只是不明白这意味着什么。
不仅如此,如果这个窗口没有任何代码显示在一个空白项目中,我为什么要发送一条消息来显示这个窗口呢?也许我应该以某种方式关闭这个默认行为,自己创建这个窗口的一个实例?
发布于 2012-06-08 00:35:32
控制器类的要点:在控制器和模型元素以及它们的用户界面之间保持一定的比率是很好的做法。对于简单的应用程序,您可以将所有代码放入AppDelegate中。一旦您开发了更复杂的应用程序,您将希望将代码从AppDelegate卸载到不同的控制器,并且您将有各种视图来维护您的模型。我试图在视图和控制器之间保持1:1的关系,以保持事务的可管理性。
控制器可以实现各种协议,以代表UI组件处理特定的功能位。然后,他们成为该组成部分的代表。例如,在您的视图中,您有一个NSTextView,您希望知道用户何时单击文本中的链接。然后,控制器可以实现<NSTextViewDelegate>并实现方法textView:clickedOnLink:atIndex:。通过这样做,它成为了您的NSTextView的代表。
控制器应该是哪一类的?有各种各样的控制器类可用于构造您的应用程序。我倾向于只使用NSViewController。该控制器能够处理显示在NSView中的NSWindow实例。NSView支持的视图层次结构允许您决定各种粒度场景(庞大、复杂的控制器或细粒度--这取决于您)。
有关前向声明问题,请参见这个职位。
我不明白你最后一个问题是在显示窗口。显然,默认模板会生成一些管道代码来显示窗口。您可以使用该代码或滚动您自己的。如果我没正确理解你..。
https://stackoverflow.com/questions/10937622
复制相似问题