0

我可以创建一个表(TableView)并让它显示三列的值:- Col1,Col2,Col3,在这三列下有 N 个值?

Col1 Col2 Col3 值
1 值 1 值 1 值
2 值 2 值 2值 3 值 3 值 3 .... ... ... ... ... ... ... ... ... ... ... 值




我现在看不到如何编写 MutableDictionary 和/或 MutableArray 来执行此类操作。

我是可可编程和objective-c的新手。我可以查看的任何示例代码?

我将感激不尽。

4

3 回答 3

4

Matt B. 的回答在技术上是正确的,但我想说,对于“cocoa 编程和 Objective-c 新手”的人来说,一开始绑定可能太神奇了。(哎呀,我做 Cocoa 的东西已经 2 年了,我才刚刚开始掌握它们的窍门)

我想说首先要理解的是委托模式。这种模式在 Cocoa 框架中非常常用NSTableView,要手动填充对象,您需要了解它。

基本思想是NSTableView知道如何画,但不知道画什么。所以我们要做的是给NSTableView一个“委托”对象,表格视图询问委托它有多少行,每行有什么,等等。

委托对象本身是一个对象,它知道应该在 tableview 中做什么,但不知道如何绘制它。它符合NSTableViewDataSource协议(相当于Java“接口”)。这样NSTableView一来,它就有了一套标准的方法,可以用来查询委托并询问它需要的信息。

于 2010-01-21T05:09:35.973 回答
2

我现在看不到如何编写 MutableDictionary 和/或 MutableArray 来执行此类操作。

字典在这里对你完全没用。

您需要创建一个对象来模拟您想要在表中列出的内容。每行对应于其中一个对象,您很可能会将其保存在一个数组中。这些列对应于模型对象的属性。

最常见的例子是人员列表(例如,员工)。表格视图中的每一行都显示一个 Person 对象。每列显示该对象的一个​​属性:名字、姓氏、可能是公司名称、电话号码等。绑定和表视图数据源协议都设计为以这种方式工作得最好(即最容易)。

您可能很想传递实现模型对象,而只是编写一个并行数组或其他东西。只要您使用数据源,就可以这样做,但不要落入这个陷阱——它会阻止您稍后切换到 Bindings,它会使属性暴露给 AppleScript(您不能让三个数组看起来像一个属性)是不可能的,并且它使开发单个表视图之外的 UI变得更加困难。

Cocoa 是围绕Model-View-Controller设计的;通过提供一个模型来使用它,你会发现 Cocoa 中的一切都变得更加容易。

(不,字典不足以作为模型对象。它不会帮助您处理 AppleScript 或绑定,并且在您想让模型对象变得比一盒简单的钥匙更智能时,它也会让您失败 -值属性。派生属性、行为和自定义初始化器在字典上实现时充其量都是丑陋的黑客。)

于 2010-01-21T05:34:40.190 回答
1

您在这里使用的关键字是bindings。Cocoa Bindings 乍一看有点像巫术,但它实际上是将数组的内容暴露给表视图的方式。一旦你掌握了它,这绝对是了不起的。

谷歌搜索NSTableView 绑定教程带来了很多页面。 来自 CocoaDevCenter的这个教程非常好(就像他们的大部分东西一样 - 绑定是一个高级主题,他们早期的一些指南也可能很有用)。

Apple 的文档有点密集,但也可能有用。

于 2010-01-21T04:41:38.970 回答