2014-02-16 4 views
2

Я хотел бы связать свойство headerTitle с NSTableColumn с NSMutableArray в моем слое модели (через NSArrayController).Как я могу привязать заголовок заголовка NSTableColumn?

В принципе, я хочу иметь массив, в котором я могу изменять значения и обновлять заголовки заголовков столбцов таблицы. Это разумно?

Однако the headerTitle binding хочет, чтобы у меня был NSString, и я не уверен, как подключить мой объект модели к этому связыванию через мой NSArrayController. Google не дает много хитов для этой проблемы.

Мой модельный слой состоит из двух классов (оба из которых соответствуют требованиям 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 объекта реализует вышеупомянутые аксессоры массивов, которые необходимы для привязок. Какие-либо предложения?

ответ

0

Я думаю, что это может/не может быть то, что вы после этого, но быстрый поиск Google приземлились меня здесь: http://pinkstone.co.uk/how-to-add-touch-events-to-a-uitableviewfooter-or-header/

редактировать: я понимаю, что это для макинтош (не КСН), но должно быть довольно легко перевести, если это действительно помогает.

1

Не пробовал это раньше, но то, что вы на самом деле просите, использует KVC для индексов массива. Быстрый google не показывал что-либо по этой проблеме, кроме некоторых результатов, которые указывают, что это еще не возможно (отметьте this)

Самый простой способ работы, который я мог бы предложить, - просто добавить специальные свойства для индексы массива .. не приятно, но делает работу.

Так что для NSMutableArray называется myArray и содержит объекты с title свойствами типа NSString вы могли бы сделать что-то вроде:

@property (nonatomic, readonly, getter = columnOneGetter) NSString *columnOneString; 

(NSString*) columnOneGetter 
{ 
    return myArray[0].title; 
} 

Всегда при условии, конечно, их количество, как известно заранее, и мы не говорим о 200 columns :-)

+0

Я только начинаю с привязок, и я не уверен, как реализовать идею. Не могли бы вы объяснить немного подробнее. Кроме того, в общем, как вы собираетесь использовать привязку 'headerTitle'' NSTableColumn'? Использую ли я его необычным способом? Я в основном хочу иметь возможность устанавливать заголовки заголовков таблиц, изменяя значения в контроллере массива; это не звучит слишком противоречиво, но я не могу найти пример того, как это сделать в любом месте! –

+0

Ответ отредактирован соответствующим образом - обычный отказ от ответственности: введен в браузер, не проверен, не отлажен и т. Д. – Jay

+0

Звучит немного странно, чтобы привязать текущий выбор к заголовку, по крайней мере, я не могу придумать вариант использования, d хотите изменить заголовок при изменении выбранной строки в таблице. – Jay

Смежные вопросы