- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在过去的几年里,我做了相当多的 iOS 开发,所以我非常熟悉 iOS 架构和应用程序设计(一切都是一个 ViewController,您可以将其推送、弹出或粘贴到选项卡栏中)。我最近开始探索正确的 Mac 应用程序开发,但感到有点迷失。我真的只是想进行一次健全性检查,也许还可以就构建这样的应用程序的正确方法提供一些建议:
我想构建一个库式的单窗口应用程序,它将在其操作过程中生成额外的窗口,但不是完整的文档。主窗口的布局与 OS X Lion 的 Mail.app 非常相似,具有三宽分割 View ,其中包含:
就像我说的,就外观而言,与 Mail.app 非常相似。
我的问题实际上是如何从 XCode 内部将所有这些粘合在一起。到目前为止,我的困惑在于:
默认项目生成一个带有主菜单和窗口的 NIB。我喜欢封装功能,所以我应该为此窗口创建一个窗口 Controller 并以某种方式将其连接到 Interface Builder 中,还是特定于窗口的功能属于其他地方?
如果可能的话,我希望三个 Pane 中的每一个都是单独的 View Controller 。我创建了三个 NSViewController 子类(XCode 自动生成 NIB),并添加(到主菜单/窗口 NIB)指定每个类的 View Controller 对象,将每个类的 view
属性连接到三个 view 之一。 code>Custom View
通用 NSView 对象我放入 NSSplitView 中。当我尝试设置每个 View Controller 的 NIB 时,只有主菜单/窗口 NIB 出现在下拉列表中,并且手动键入所需的 NIB 似乎没有效果(运行应用程序时 View 的内容实际上并未出现) 。这让我觉得我做错了什么。
我对前两个 Pane 应该使用什么类型的 View 有点模糊。显然,我将为最后一个 Pane 构建一个自定义 Pane ,但看起来前两个 Pane 应该已经存在于 Cocoa 框架中。
无论如何,如果我做的事情完全错误,请不要费心解决我的问题;只是告诉我我应该做什么。我想我只需要一位合适的 Mac 开发人员来为我指明正确的方向。
最佳答案
关于你的第一个问题,你不需要使用Apple在MainMenu.xib中提供的主窗口。如果需要,您可以从 Nib 中删除该窗口,然后实例化 NSWindowController
在你的applicationDidFinishLaunching:
然后加载并控制主窗口的委托(delegate)方法。
你肯定对 NSViewController
感到困惑,这并不奇怪,因为您可能会认为它的工作原理类似于 UIViewController
。
事实上,NSViewController
与 UIViewController
完全不同并且没有相同级别的 Interface Builder 支持。例如,您不能将 View Controller 放置在 IB 的窗口中,而这是 iOS 上的标准做法。 NSViewController
是 Mac 上相对较新的类,通常使用它以编程方式加载 View 并管理 View 内容。
最接近映射到 UIViewController
的类在 Mac 上是 NSWindowController
。这比 NSViewController
存在的时间要长得多。事实上,许多 Mac 应用程序不使用 NSViewController
完全没有。
通常,应用程序中的每个窗口都应该有一个窗口 Controller 来管理它。您可以使用 NSWindowController
的子类处理每个窗口的许多功能。
如果您想使用NSViewController
,那么您应该使用窗口 Controller 来管理这些 View Controller 对象。由于上述缺乏 Interface Builder 支持,这通常以编程方式完成。每个NSViewController
实例从特定的 nib 文件加载其 View 。您通常不会在 Interface Builder 中添加 View Controller 。
对于您的源列表,您通常会使用 NSOutlineView
如果您有多个部分或 NSTableView
。每当您需要项目列表时,就会使用这两个对象。 NSOutlineView
是分层的,而 NSTableView
是平坦的。
我希望这会有所帮助。
关于xcode - 高级应用程序设计/架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9403743/
如何有效地设计一个C++模块化程序?如何学习? 最佳答案 对于初学者,您可能希望采取“暴力”过程: 1. 在一个文件中写一个简单的main函数。 2. 增加一些功能,先编译再测试。 3.重构(在谷歌中
前言 有人说现在记事类app这么多,市场这么卷,为什么还想做一个笔记类App? 一来,去年小孩刚出生,需要一个可以记录喂奶时间的app,发现市面上没有一款app能够在两步内简单记录一个时间,可能i
我正处于 Web 应用程序的设计阶段,该应用程序允许用户创建工作请求,并且工作人员可以针对这些请求投入时间。该应用程序还将为主管提供报告功能,以获取每日总计、报告,并说明花费的时间、“成本分配”。 我
前言:很多刚刚接触编程的人都不知道怎么下手编写程序,特别是学习了新的知识点,不知道有什么用,那么本文将以简单的存储结构及简单的运算,条件语句,分支语句,循环语句结合,带来一个双人对战版五子棋,这是一
我正在尝试通过 C++ 多线程解决网络流量问题。 给定一个网络(所有节点都由弧连接,每个弧连接2个且只有2个结束节点,一个是输入节点,另一个是输出节点,每个节点可以有多个输入弧和输出弧),每个节点需要
我有一个关于编程和文件的问题。 while(current!=NULL) { if(current->Id_Doctor!='\0') { current=current->next;
下面的‘C’语句执行什么操作? star = star ^ 0b00100100; (A) 切换变星的第 2 位和第 5 位。 (B) 清除变量星的第 2 位和第 5 位以外的所有位。 (C) 设置除
我写了下面的代码: #include int main() { int a, b; printf("Enter values of a and b\n"); scanf(" %d%d "
我正在将 C 代码编程到 PIC 板上。我的问题是如何让我的程序计算按下按钮(RB0)的时间。然后它会显示所花费的时间并将其显示在液晶显示屏上。以毫秒为单位计算。下面是到目前为止我的代码。 /
我是一名优秀的程序员,十分优秀!