- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用 Storyboard 的基于 Mac 文档的 Core Data 应用程序。 Storyboard具有以下布局:
Window Controller
Split View Controller
Table View Controller
Text View Controller
我的核心数据模型包含一个章节实体,该实体包含两个属性:标题和内容。我希望表格 View 显示每个章节的标题。 TextView 显示所选章节的内容。
如果我使用 xib 文件,我会向 xib 文件添加一个数组 Controller 。我将数组 Controller 绑定(bind)到文件的所有者以访问我的 NSPersistentDocument 子类。我会将 TableView 绑定(bind)到数组 Controller 的arrangedObjects 属性,并将 TextView 绑定(bind)到数组 Controller 的选择。
但是有了 Storyboard,事情就变得更加复杂。我可以将数组 Controller 添加到 TableView Controller ,将 TableView 绑定(bind)到数组 Controller ,并使章节标题显示在 TableView 中。但是 TextView Controller 无法绑定(bind)到该数组 Controller ,因为该数组 Controller 位于另一个场景中。
如何在 Interface Builder 中添加数组 Controller ,以便 TableView Controller 和 TextView Controller 都可以访问它并绑定(bind)到它?
最佳答案
实现这项工作的关键是在每个降序的 NSViewController
子类中都有一个 NSArrayController
实例,并通过中央数据源(很可能是你的 NSDocument子类)。然后,您可以通过降序传递此数据源作为您的 NSViewController
子类 representedObject
Controller 。下面是一个带有 NSWindowController
的 Storyboard应用程序示例,它有一个内容 View Controller ,它是一个带有两个 subview Controller 的 NSSplitViewController
(主/详细设置):
class Document: NSDocument {
var dataSource: DataSource? = DataSource()
...
}
class DataSource: NSObject, NSCoding {
var items: [Item] = []
var selectionIndexes: NSIndexSet = NSIndexSet()
...
}
class WindowController: NSWindowController {
override var document: AnyObject? {
didSet {
if let document = self.document as? Document {
self.contentViewController?.representedObject = document
}
}
}
}
class SplitViewController: NSSplitViewController {
override var representedObject: AnyObject? {
didSet {
for viewController in self.childViewControllers as! [NSViewController] {
viewController.representedObject = representedObject
}
}
}
}
诀窍是将representedObject
绑定(bind)到 Storyboard中每个降序 View Controller 的NSArrayController
。您不仅需要绑定(bind) contentArray
,还需要绑定(bind) selectionIndexes
。
结果是两个降序 NSArrayController 上的 selectionIndexes
保持同步,因为它们通过中央数据源 (DataSource
上例中的子类)。
为了让这一切更清楚,我创建了一个示例项目来演示这一点:https://github.com/acwright/StoryboardBindingsExample
关于cocoa - 在多个 Storyboard 场景中使用 NSArrayController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26748148/
正在完成我的第一个 Cocoa OS X 项目,其中我获取远程 XML 数据并将对象存储在 NSMutableArray 中。 今天,当我在项目中第一次打开IB时,我发现了对象NSArrayContr
我是 Objective-C 的新手,到目前为止我很喜欢它。然而,我似乎在兜圈子。我试图在不编写代码的情况下做尽可能多的事情。是否可以有效地将一个 NSArrayController 的内容集绑定(b
我有一个简单的 NSArrayController 连接到我的 coreData 模型之一。我可以轻松地显示 NSTableView 中的所有项目,没有问题,但是,如果我尝试将包含 NSPopUpBu
在我的 MainController 中,有一个 Person 数组,它绑定(bind)到 NSArrayController。人员姓名显示在表name 列中。如果我将一个按钮绑定(bind)到 NS
我有一个连接到 NSManagedObjectContext 的 NSArrayController。此外,我有一个 NSTableView,其内容和选择索引绑定(bind)到所述 NSArrayCo
我正在 Xcode 控制台中检查 NSArrayController 的数量,我得到了这个: (lldb)po [_myArrayAC.content count] nil 但是如果我尝试检查该值是
我在使用 NSArrayController rearrangeObjects 函数时遇到了麻烦 - 该函数是从某些后台步骤调用的,有时应用程序会因错误而崩溃:“endUpdates 在没有 begi
我刚刚意识到有两种方法可以使用 NSArrayController。 将 Controller 绑定(bind)到数组并向数组添加对象。或者根本不使用任何数组,直接将对象添加到 Controller
我正在开发一个 Mac 应用程序,并且正在努力让谓词过滤器正常工作。对于 NSArrayController,使用 fetch 与过滤谓词的方式有什么不同吗? 我正在使用 Core Data 来存储我
我想使用 NSArrayController 向 NSTableView 提供数据。我面临的问题是我不想将所有数据预先加载到数组中,然后使用数组 Controller setContent: 方法。我
我有一个示例项目 https://github.com/ericgorr/LazyFetching 设置非常简单。在我的 CoreData 模型中,我有两个实体: 具有 name 属性和与 Item
非常简单的问题让我抓狂:以编程方式清除 NSArrayController 选择的正确方法是什么? 我正在设计一个包含以下组件的 View : NSArrayController *controlle
我无法让核心数据支持的 NSArrayController 在我的代码中正常工作。下面是我的代码: pageArrayController = [[NSArrayController alloc] i
我正在努力将通过拖放(文件从 finder 到 NSView)接收到的变量传递给 AppDelegate 中的 NSArrayController。 NSView 接收拖放: class MyView
我在我的 OS X 应用程序中使用 Core Data,我将一些 TableViews 绑定(bind)到 NSArrayControllers。我遇到的问题是,当我尝试使用数组 Controller
我在过滤 NSArrayController 时遇到问题。内容数组绑定(bind)到一个包含 NSDictionaries 的 NSMutableArray。我想过滤所有“名称”键等于“a”的 NSD
我有一个 NSArrayController,其内容是我的 AppDelegate 的“servers”属性。 我有一个 NSTextField ,它绑定(bind)到 NSArrayControll
我有一个链接到核心数据模型的 NSArrayController 子类。在我调用的方法之一中 [self performSelectorInBackground:@selector(someLongE
也许我不明白如何正确使用 NSArrayController,但这是我的情况。 我的实体设置如下:帐户 -> 文件夹 -> 聊天。因此,我将针对特定文件夹实体进行大量聊天。我希望我的数组 Contro
我有一个 NSArrayController,它返回一个 NSManagedObjects 数组,但是我只对在 NSTableView 中显示这些对象的某些属性感兴趣,并且不需要所有这些属性。有没有办
我是一名优秀的程序员,十分优秀!