В моем приложении какао у меня есть 2 NSTableViews. AppDelegate является источником данных для них обоих. Я хочу изменить данные второго TableView в зависимости от выбранной строки первого TableView. Для этого я использую NSDictionary. Я добавляю массив для каждой записи в массиве данных таблицы 1.
- (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView{
if([table1 selectedRow] != -1 && [[aTableView identifier] isEqualToString:@"table2"]){
return [[dict objectForKey:[arrForTable1 objectAtIndex:[table1 selectedRow]]] count];
}
if([[aTableView identifier] isEqualToString:@"table1"]) return [arrForTable1 count];
return 0;
}
- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex{
if([table1 selectedRow] != -1 && [[aTableView identifier] isEqualToString:@"table2"]){
return [[dict objectForKey:[arrForTable1 objectAtIndex:[table1 selectedRow]]] objectAtIndex:rowIndex];
}
if([[aTableView identifier] isEqualToString:@"table1"]){
return [arrForTable1 objectAtIndex:rowIndex];
}
return nil;
}
Этот код дает сбой, когда в таблице 2 выбрана строка и после этого происходит переключение в таблице таблицы на строку с пустым массивом.
Как я могу это исправить? Я попытался [table2 deselectAll: self] в - selectionShouldChangeInTableView: метод, но он не работает. Это работает, чтобы вызвать deselectAll: метод с кнопкой, и это было нормально.