【问题标题】:NSTableView only display button when cell is selectedNSTableView 仅在选择单元格时显示按钮
【发布时间】:2014-07-20 19:59:19
【问题描述】:

我有一个基于视图模式的 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];

}

【问题讨论】:

  • 完成代码后重新加载表...可能会起作用...
  • 抱歉没用

标签: objective-c xcode macos nstableview


【解决方案1】:

设法让它工作,它之前没有工作,因为我将按钮设置为隐藏在 -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];
    }

}

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多