在我的可可应用程序中,我有2个NSTableViews。 AppDelegate是两者的数据源。我想根据第一个TableView的选定行更改第二个TableView的数据。为此,我使用NSDictionary。我为Table1的数据数组中的每个条目添加一个数组。
- (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;
}
当在table2中选择一行时,此代码崩溃,然后在table1中切换到一个空数组的行。
我该如何解决?我尝试在[selectionShouldChangeInTableView:方法]中[table2 deselectAll:self]但它不起作用。它可以通过按钮触发deselectAll:方法,这很好。
答案 0 :(得分:0)
当您在table1中的选择发生变化时,您可能需要致电[table2 reloadData]
。