使用所选行更改数据时,NSTableView会崩溃

时间:2012-02-07 21:08:16

标签: objective-c cocoa nstableview

在我的可可应用程序中,我有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:方法,这很好。

1 个答案:

答案 0 :(得分:0)

当您在table1中的选择发生变化时,您可能需要致电[table2 reloadData]