/ / NSTablview NSTextFieldCell SetSelectable--macos、デリゲート、nstableview、nstextfieldcell

NSTablview NSTextFieldCell SetSelectable - - macos、delegates、nstableview、nstextfieldcell

特定の条件に対して、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は0

NSTableViewメソッドを使用してセルを選択解除します 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;

}