Номер строки NSTableView

Я не могу найти способ сделать строку, чтобы показать номер отображаемой строки.

Фактически у меня есть NSArrayController и NSTableView, столбцы которых привязаны к NSArrayController.

Теперь мне нужно показать номер строки (возможно, индекс данных в DataModel в порядке), и я не могу найти способ сделать это.

Какие-либо предложения?


person Prooshani    schedule 20.06.2011    source источник


Ответы (2)


Ознакомьтесь с этим ответом: Отображение индекса строки в NSTableView, привязанном к NSArrayController

person sosborn    schedule 20.06.2011
comment
Спасибо за ответ, я видел этот ответ, и он мне не очень помог. Я думаю, что можно было бы подсчитать строки объекта с помощью методов NSArrayController`, таких как [email protected], а затем привязать столбец строки к массиву, который он содержит, с номером от 1 до номера @count. Что вы думаете об этом? - person Prooshani; 21.06.2011
comment
Честно говоря, я бы сказал, забудьте о привязке этой строки. Я имею в виду, к чему бы вы его даже привязывали, если бы вы не отслеживали его в своей Entity? Вы действительно использовали метод источника данных, упомянутый в этой ссылке? Если вы против этого, то вам нужно будет добавить свойство к своей сущности (например, rowIndex). Но вы обнаружите, что трудно поддерживать синхронизацию этого свойства с реальностью, если только ваши данные не очень статичны. - person sosborn; 21.06.2011
comment
ты прав, мой друг, я хочу показать строку от 1 до @count, но я неправильно сказал BIND это. Можно ли назначить ячейки столбца таблицы для отображения некоторого специального NSNumber? - person Prooshani; 21.06.2011
comment
Да, это возможно. Все, что вам нужно сделать, это следовать инструкциям по ответу, на который я указал. Если вы посмотрите на принятый ответ, исходный постер оставит комментарий, объясняющий, как это сделать. Почему ты не хочешь попробовать это? - person sosborn; 21.06.2011
comment
Могу я снова открыть этот вопрос? Мне нужно отобразить индекс объекта в упорядоченном отношении Core Data, которое использует класс NSOrderedSet. Вопреки процитированному вопросу, # я хочу отображать не индекс отображения, а индекс объекта в отношении. Часто они одинаковы, но не всегда, например, при фильтрации некоторых строк. - person Jean-Denis Muys; 16.11.2011
comment
Откройте новый вопрос, если он отличается от того, что задал ОП. - person sosborn; 17.11.2011

пример с привязкой object.value в построителе интерфейса:

// InfoToBind.h

@interface InfoToBind : NSObject {

NSString *kSurname ;
NSString *kName ;  
NSInteger kNumberRow;  
}
@property (nonatomic, retain) NSString * kSurname ;
@property (nonatomic, retain) NSString *kNameKey ;
@property (nonatomic, assign) NSInteger kNumberRow;

//InfoToBind.m

@syntesize ...

//delegate.m

#import "InfoToBind.m


- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{

InfoToBinb *infoBind = [InfoToBind alloc]init];

images = [[NSMutableArray alloc]init];


//example
InfoDictionary = [[NSDictionary alloc] initWithObjectsAndKeys: 
    @"name", @"Giulio", @"surname", @"Cesare", nil];

NSMutableArray dataSourceArray = [NSMutableArray alloc]init];

infoBind.kName = [InfoDictionary objectForKey:@"Name"];
infoBind.kSurname = [InfoDictionary objectForKey:@"Surname"];

 NSUInteger x;
 for (x = 0; x <= dasourceArray.count; x++) {
    infoBind.kNumberRow ++;
 }
 [dataSourceArray addObject:myClass];


[_tableView insertRowsAtIndexes:[NSIndexSet indexSetWithIndex:dataSourceArray.count]   withAnimation:NSTableViewAnimationSlideLeft];

 }

- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView{

return [dataSourceArray count];
}

- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
// Used by bindings on the NSTableCellView's objectValue
NSDictionary *item = [dataSourceArray objectAtIndex:row];
NSLog(@"item is %@", item);

return item;

}

// перетащите TextField в CellView и привяжите его к «представлению ячейки таблицы» и добавьте это значение: objectValue.kNumberRow

et voilà

person sundsx    schedule 28.06.2014