objective-c – 从可变数组中填充NSTableview

objective-c – 从可变数组中填充NSTableview,第1张

概述我已经尝试了两天,不断陷入死胡同. 我已经完成了Aaron Hillegass的MAC OS X可可编程,并完成了所有与NSTableview和可变数组相关的练习,我一直在尝试修改它们以满足我的需求. 但是,它们似乎都没有使用带有对象作为数据源的数组,它似乎使用tableview作为数据源. 我正在尝试实现Jonas Jongejan对我的代码here的“重做”,使用Cocoa前端来显示结果. 我 我已经尝试了两天,不断陷入死胡同.

我已经完成了Aaron Hillegass的MAC OS X可可编程,并完成了所有与NStablevIEw和可变数组相关的练习,我一直在尝试修改它们以满足我的需求.

但是,它们似乎都没有使用带有对象作为数据源的数组,它似乎使用tablevIEw作为数据源.

我正在尝试实现Jonas Jongejan对我的代码here的“重做”,使用Cocoa前端来显示结果.

我知道的任何指示或建议应该很简单,但我在这里的荒野中迷失了.

我可以通过设置数组填充

解决方法 一旦你理解它(当然!),它真的很简单.您不能直接将NSArray用作表源.您需要创建一个实现 NSTableViewDataSource的自定义对象,或者在某个现有类中实现该协议 – 通常是控制器.如果使用Xcode创建基于标准文档的应用程序,文档控制器类(它将被称为Mydocument)是一个很好的类.

您需要至少实现以下两种方法:

– numberOfRowsIntableVIEw:– tableVIEw:objectValueFortableColumn:row:

如果您有一个可变数组,其值要在具有一列的表视图中使用,则以下内容应作为开头:

– numberOfRowsIntableVIEw: (NStableVIEw*) atableVIEw{    return [myMutableArray count];}– tableVIEw: (NStableVIEw*) atableVIEw objectValueFortableColumn: (NStableColumn *)atableColum row: (NSInteger)rowIndex{    return [myMutableArray objectAtIndex: rowIndex];}

我刚刚想到你可以将上面两个方法作为一个类别添加到NSArray中,用self替换myMutableArray然后你可以使用一个数组作为数据源.

无论如何,使用可变数组,重要的是每次更改它时,都需要让表视图知道它已被更改,因此您需要发送表视图-reloadData.

如果您的表视图有多个列,并且您希望使用数组中的对象属性填充它,那么您可以采用一种技巧来使自己更容易.假设数组中的对象是一个名为Person的类的实例,并定义了两个方法:

-(Nsstring*) givenname;-(Nsstring*) familyname;

并且您希望表视图具有每个列的列,您可以将每列的标识符属性设置为该列显示的Person属性的名称,并使用如下所示的内容:

– tableVIEw: (NStableVIEw*) atableVIEw objectValueFortableColumn: (NStableColumn *)atableColum row: (NSInteger)rowIndex{    Person* item = [myMutableArray objectAtIndex: rowIndex];    return [item valueForKey: [tableColumn IDentifIEr]];}

如果用valueForKeyPath:替换valueForKey:并且Person类也有以下方法:

-(Person*) mother;-(Person*) father;-(Nsstring*) fullname;  // concatenation of given name and family name

您可以添加具有以下标识符的表列:father.fullname或mother.familyname,这些值将自动填充.

总结

以上是内存溢出为你收集整理的objective-c – 从可变数组中填充NSTableview全部内容,希望文章能够帮你解决objective-c – 从可变数组中填充NSTableview所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1021905.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存