我想构建一个库式的单窗口应用程序,它将在其运行期间产生额外的窗口,但不是完整的文档.主窗口的布局与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是扁平的.
我希望这有帮助.
总结以上是内存溢出为你收集整理的xcode – 高级应用程序设计/架构全部内容,希望文章能够帮你解决xcode – 高级应用程序设计/架构所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)