- 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/
对于相当简单的表结构,即。人员、标准和 PersonCriteria(组合表),我现在设置了一个查询,选择所有符合所有选定条件的人。 此时查询本身看起来像这样: SELECT p.PersonID
我在使用高级 SQL 查询时遇到了一些问题,而且我已经有很长时间没有使用 SQL 数据库了。我们使用 MySQL。 背景: 我们将使用两个表: “交易表” 表:expire_history +----
我找不到错误。也许你可以帮助我:我的代码如下: var data = {"product":[{"config":[{"id":"1","price":"100","sku":"1054879634
我有一个列表列表的列表(最后一个列表并不重要) data = [[[['f', 0], 'C'], [['X', 0], 'X']], [[['s', 1], 'X'], [['X', 0], 'X'
我想准备将使用表格的 session ,并在另一个网站上将新项目添加到 session 中。 默认.cs string[] tab = new string[100];
我知道有一些像: Bubble sort Insertion sort Shell sort Merge sort Heapsort Quicksort Bucket sort Radix sort
像https://softwareengineering.stackexchange.com/questions/150616/return-random-list-item-by-its-weigh
我正在开发一个 posix 脚本 (Linux),它获取一个网页,将内容存储在一个变量中并查找字符串“SUCCESS”。如果找到字符串,则不执行循环内容,如果没有找到字符串,则反复执行循环,直到找到为
我不确定这个问题是否已在其他地方得到解答,而且我似乎无法通过谷歌找到任何不是“Hello World”示例的内容...我正在使用 C# .NET 4.0 进行编码。 我正在尝试开发一个控制台应用程序,
我创建了一个房地产网站,我希望按照列表的最后更新和完整性对列表进行排序。所以我一直想弄清楚如何结合最近更新的列表按mysql中的字段(completion_score)进行排序。完成分数将采用 1
只所以称为“高级”用法,是因为我连switch的最基础的用法都还没有掌握,so,接下来讲的其实还是它的基础用法! switch 语句和具有同样表达式的一系列的 IF 语句相似。很多场合下需要把同一
之前的章节中,我们学习了 XML DOM,并使用了 XML DOM 的 getElementsByTagName() 方法从 XML 文档中取回数据 本章节我们将继续学习其它重要的 XML DOM
我对我尝试编写的 SQL 查询有疑问。 我需要从数据库中查询数据。该数据库除其他外,还包括以下 3 个字段: Account_ID #, Date_Created, Time_Created 我需要编
我正在使用非常激进的视频压缩,例如 -crf 51 .我将其用于“艺术”效果,因此从普通视频压缩的角度来看,我所做的可能没有意义。 到目前为止,我只使用了非常基本的压缩控制,只使用了 -crf。或 -
我真的在学习 lucene 和 ravendb 上的绳索 - 我在 Raven 中有以下文档 - { "InternalEvent": { "Desec": "MachineInfo: 1
通常 grep 命令用于显示包含指定模式的行。有没有办法在包含指定模式的行之前和之后显示 n 行? 这可以使用awk来实现吗? 最佳答案 是的,使用 grep -B num1 -A num2 在匹配之
我搜索了高低,并尝试了几个小时来操纵似乎适合的各种其他查询,但我没有快乐。 我试图加入 Microsoft SQL Server 2005 中的几个表,其中一个示例是: Company Table (
我有一个如下所示的 XML 文件: teacher1Name
我将如何在 CF 中创建此语句? 显然括号不起作用,但说明了我想要完成的工作。这是什么语法? 编辑: 好的,我了解如何使用 EQ 等等。我有点匆忙地发布了这个。我的问题是关于括号。以这种方式使用它们
主要问题:我需要使用具体对象结构对任何对象结构进行类型扩展。 我在 VS Code 中测试的默认值。 我的解决方案: /** @template A @typedef {{[Ki in keyof A
我是一名优秀的程序员,十分优秀!