我想将NSTableColumn的headerTitle属性绑定到我的模型层中的NSMutableArray (通过NSArrayController)。
基本上,我希望有一个数组,我可以在其中更改值,并更新表的列标题。这是否合理呢?
但是,the headerTitle binding需要一个NSString,而我不确定如何通过NSArrayController将我的模型对象连接到这个绑定。对于这个问题,谷歌并没有给出太多的结果。
我的模型层由两个类组成(这两个类都适当地符合KVC )。第一个是表示单个列标题的模型,它有一个属性title,
// A model class representing the column title of single NSTableColumn
@interface ColumnTitle : NSObject
@property NSString *title;
+ (ColumnTitle*) columnTitleWithTitle:(NSString*) aString;
@end第二个是表示ColumnTitle对象的有序组的模型对象,
// Class representing an order collection of model items
@interface TableColumnTitles : NSObject
@property NSMutableArray* columnTitles; // an array of ColumnTitle objects
// These are the KVC array accessors
-(void) insertObject:(ColumnTitle*)columnTitle inColumnTitlesAtIndex:(NSUInteger)index;
- (void)removeObjectFromColumnTitlesAtIndex:(NSUInteger)index;
- (void)replaceObjectInColumnTitlesAtIndex:(NSUInteger)index withObject:(ColumnTitle*)columnTitle;
@end请注意,TableColumnTitles对象实现了绑定所需的上述数组访问器。有什么建议吗?
发布于 2014-02-16 16:33:54
以前没有尝试过,但您实际要求的是对数组索引使用KVC。在这个问题上,快速的谷歌没有找到任何东西,除了一些结果表明(目前)还不可能(查看this)。
我能想到的最简单的变通办法是简单地为数组索引添加专用属性。不是很好,但工作很好。
因此,对于一个名为myArray的NSMutableArray,它包含具有NSString类型的title属性的对象,您可以这样做:
@property (nonatomic, readonly, getter = columnOneGetter) NSString *columnOneString;
(NSString*) columnOneGetter
{
return myArray[0].title;
}总是假设它们的数量是预先知道的,我们不是在谈论200列:-)
发布于 2014-02-16 15:36:46
我想这可能不是你想要的,但快速的谷歌搜索让我找到了这里:http://pinkstone.co.uk/how-to-add-touch-events-to-a-uitableviewfooter-or-header/
编辑:我知道这是为mac (不是ios)编写的,但如果它真的有帮助的话,应该很容易翻译。
https://stackoverflow.com/questions/21807676
复制相似问题