选择单元格时,仅NSTableView显示按钮

时间:2014-07-20 19:59:19

标签: objective-c xcode macos nstableview

我在基于视图的模式下有一个NSTableview,在其中我有自定义的NSTableViewCells。每个单元格都有一个按钮,但我只想在选中单元格时显示按钮。因此,当取消选择单元格时,我想隐藏按钮。我试图迭代每一行都没有成功,我不确定如何解决这个问题。

这就是我要显示的按钮

-(void)tableViewSelectionDidChange:(NSNotification *)notification
{
    ...

    //Hide / show dropdown menus
    NSInteger selected = [_tableView selectedRow];
    CustomCell *cell = [_tableView viewAtColumn:0 row:selected makeIfNecessary:NO];
    [cell setIsMenuHidden:NO];

}

2 个答案:

答案 0 :(得分:0)

管理让它工作,它之前没有工作,因为我将按钮设置为隐藏在-viewForTableColumn:Row方法中!仍然想知道是否有更好的方法来做到这一点:)

//Hide / show dropdown menus
NSInteger selected = [_tableView selectedRow];
for(int i = 0; i < [_tableView numberOfRows]; i++) {
    if(i == selected) {
        [[_tableView viewAtColumn:0 row:i makeIfNecessary:NO] setIsMenuHidden:NO];
    } else {
        [[_tableView viewAtColumn:0 row:i makeIfNecessary:NO] setIsMenuHidden:YES];
    }

}

答案 1 :(得分:0)

在自定义单元格视图中,您可以覆盖-viewWillDraw。呼叫super,然后根据您想要的状态进行任何调整。

您可以使用表格视图的-rowForView:-isRowSelected:方法来确定是隐藏还是显示按钮。或者,单元格视图的超级视图将是行视图,NSTableRowView具有selected属性(-isSelected获取者)。