【问题标题】: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)。