xcode – 高级应用程序设计/架构

前端之家收集整理的这篇文章主要介绍了xcode – 高级应用程序设计/架构前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在过去的几年里,我已经完成了相当多的iOS开发,所以我对iOS架构和应用程序设计非常熟悉(你可以推送,弹出或粘贴到标签栏中的所有东西都是ViewController).我最近开始探索适当的Mac应用程序开发,感觉有点迷失.我想真的只是有一个完整性检查,也许有一些建议,如何建立这样的应用程序的正确方法是:

我想构建一个库式的单窗口应用程序,它将在其运行期间产生额外的窗口,但不是完整的文档.主窗口的布局与OS X Lion的Mail.app非常相似,具有三宽分割视图,包含:

>源列表或高级主题选择
>与第一个窗格中所选主题相关的项目的列表视图
>详细视图,显示在中间窗格中选择的对象的详细信息

就像我说的,就外观而言,与Mail.app非常相似.

我的问题是如何从XCode内部将所有这些粘合在一起.这是我到目前为止的困惑所在:

>默认项目生成带有主菜单和窗口的NIB.我喜欢封装功能,所以我应该为这个窗口创建一个窗口控制器,并以某种方式将它连接到Interface Builder中,还是特定于窗口的功能属于其他地方?
>如果可能的话,我希望我的三个窗格中的每一个都是独立的视图控制器.我创建了三个NSViewController子类(XCode自动生成NIB),并添加(到主菜单/窗口NIB)视图控制器对象与指定的每个类,将每个视图属性连接到我放入的三个自定义视图通用NSView对象之一NSSplitView.当我尝试设置每个视图控制器的NIB时,只有主菜单/窗口NIB出现在下拉列表中,并且手动键入所需的一个似乎没有效果(运行应用程序时视图的内容实际上没有显示) .这让我觉得我做错了什么.
>对于我应该为前两个窗格中的每个窗格使用哪种类型的视图,我有点模糊.我显然会为最终窗格构建一个自定义窗口,但看起来前两个应该已经存在于Cocoa框架中.

无论如何,如果我做错了什么,不要费心去解决我的问题;告诉我我应该做什么.我想我只需要一位合适的Mac开发人员指出我正确的方向.

解决方法

关于第一个问题,您不需要使用Apple在MainMenu.xib中提供的主窗口.如果需要,可以从nib中删除该窗口,然后在applicationDidFinishLaunching:delegate方法中实例化NSWindowController,然后加载并控制主窗口.

你肯定对NSViewController感到困惑,因为你可能会认为它的工作方式与UIViewController类似.

实际上,NSViewController与UIViewController完全不同,并且没有相同级别的Interface Builder支持.例如,您无法在IB的窗口中放置视图控制器,而这是iOS上的标准做法. NSViewController是Mac上相对较新的类,通常用它来以编程方式加载视图并管理视图内容.

最接近Mac的UIViewController的类是NSWindowController.这已经比NSViewController长了很多,事实上很多Mac应用程序都没有使用NSViewController.

通常,应用程序中的每个窗口都应该有一个窗口控制器来管理它.您可以使用NSWindowController的子类来处理每个窗口的许多功能.

如果要使用NSViewController,则应使用窗口控制器来管理这些视图控制器对象.由于上述缺少Interface Builder支持,这通常以编程方式完成.每个NSViewController实例从特定的nib文件加载其视图.您通常不在Interface Builder中添加视图控制器.

对于源列表,如果您有多个部分或NSTableView,通常会使用NSOutlineView.只要需要项目列表,就会使用这两个对象. NSOutlineView是分层的,而NSTableView是扁平的.

我希望这有帮助.

猜你在找的cocoa相关文章