特定の条件に対して、nstextfieldcellの1つを選択解除しようとしました。サンプルコードを添付しました。
-(void)tableView:(NSTableView *)tableView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{
if(tableView == resizeTV){
if([[tableColumn identifier] isEqualToString:@"Name"]){
if([[cell stringValue] isEqualToString:@"Cate"]){
[cell setSelectable:FALSE];
}
}
}
}
セルは、条件の確認時にまだ選択されています。 tableviewをtabledatasourceとdatadelegateのクラス名にバインドしました。セルを選択できます。私は間違っていますか?
回答:
回答№1は0NSTableViewメソッドを使用してセルを選択解除します setSelectionHighlightStyle:
-(void)tableView:(NSTableView *)tableView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{
if(tableView == resizeTV){
if([[tableColumn identifier] isEqualToString:@"Name"]){
if([[cell stringValue] isEqualToString:@"Cate"]){
[table_view setSelectionHighlightStyle:NSTableViewSelectionHighlightStyleNone];
}
}
}
}
特定の行の選択を解除するには、このデリゲートメソッドを使用します
- (BOOL)tableView:(NSTableView *)tableView shouldSelectRow:(NSInteger)row
{
if (row==7)
{
[table_view setSelectionHighlightStyle:NSTableViewSelectionHighlightStyleNone];
}
else
{
[table_view setSelectionHighlightStyle:NSTableViewSelectionHighlightStyleSourceList];
}
return YES;
}