具有故事板的多个视图中的基本结构NSArrayController

时间:2014-12-07 14:50:27

标签: objective-c macos cocoa model-view-controller nsarraycontroller

我真的需要一些帮助。自从我开始使用Cocoa进行编程以来,我遇到了多个视图控制器和阵列控制器问题。我总是遇到一些糟糕的粘合代码和糟糕的代码结构。

我正在开始一个新项目,并希望这次能够做到正确。

主要问题是: 假设我有一个基于文档的应用程序(!),它有点像一个主要细节的东西。它与10.10的故事板 一个带有表的视图,另一个带有条目的信息。 我需要一些基本的结构帮助。信息存储在一个数组中,这意味着我需要一个NSArrayController。如果我将一个Object放入存储mutablearray的IB中,我需要将它和arraycontroller放入故事板的同一场景中。我现在如何从另一个viewcontroller中访问任何内容? IB structure

这通常是怎么做的?如果我在FirstViewController中引用NSArrayController我有它,但我需要在SecondViewController中对数据进行一些工作,而不仅仅是显示它,我需要用数据计算东西。我不能在SecondViewController中放置另一个NSArrayController,因为那时我需要将另一个Object放入场景中,它将是一个新的,而不是带有数据的旧的。

我不知道我是否遗漏了一些明显的东西,但我无法理解这一点。我需要在多个ViewControllers中访问多个地方的数据数组,而不仅仅是在IB中,我还需要在代码中使用数据。

这个问题演变成一个更大的问题,但如果我能从这个想法得到一些帮助,我可以自己解决它。

在此先感谢您提供一些基本指导。

修改 谷歌几乎整整一天之后我都认为没有人知道这一点,因为在这里所有与我相似的其他问题都没有得到回答,或者如果没有做更多的工作,这是不可能的?我能想到的只是在windowcontroller中引用ArrayController并以某种方式告诉viewControllers使用该数据但是首先在osx上使用故事板是什么意思?

如果Apple真的发布了Sketch的故事板版本(草图"下一代"),我想我会更好地了解如何做到这一点,就像他们在wwdc视频中谈到的那样在那里做一些想法,但是。今天我不认为这可能与故事板。我将继续以我的方式继续这样做。

-Benjamin

1 个答案:

答案 0 :(得分:2)

这可以做到!诀窍是使用多个NSArrayController,其selectionIndexes通过中央数据源绑定在一起。

我在这里用一个示例项目演示了这个: https://github.com/acwright/StoryboardBindingsExample

另请参阅我在此提供的答案:https://stackoverflow.com/a/29904620/296708