【发布时间】:2012-12-22 15:49:25
【问题描述】:
我曾经问过这个问题,但我对解决方案不太满意。
Automatically adjust size of NSTableView
我想在NSPopover 或NSWindow 中显示NSTableView。
现在,窗口的大小应该会根据表格视图进行调整。
就像 Xcode 一样:
使用自动布局非常简单,您只需将内部视图固定到超级视图即可。
我的问题是,我无法确定表格视图的最佳高度。 下面的代码枚举了所有可用的行,但它没有返回正确的值,因为表视图还有其他元素,如分隔符和表头。
- (CGFloat)heightOfAllRows:(NSTableView *)tableView {
CGFloat __block height;
[tableView enumerateAvailableRowViewsUsingBlock:^(NSTableRowView *rowView, NSInteger row) {
// tried it with this one
height += rowView.frame.size.height;
// and this one
// height += [self tableView:nil heightOfRow:row];
}];
return height;
}
1。问题
我该如何解决这个问题?如何正确计算表格视图所需的高度。
2。问题
我应该在哪里运行此代码?
我不想在控制器中实现它,因为它绝对是表格视图应该自己处理的东西。
而且我什至没有找到任何有用的委托方法。
所以我想最好的办法是你可以继承NSTableView。
那么我的问题2,在哪里实现呢?
动机
绝对值得赏金
【问题讨论】:
-
我很确定你的屏幕截图显示了一个菜单...
-
@Richard 我不这么认为,NSMenu 没有滚动条,即使你明白了 ;)
-
@Richard 使用 Accessibility Inspector 进行了查看。绝对是表格视图^^
-
好吧,很奇怪。这是针对基于视图的表格还是基于单元格的表格?
-
这是一个基于视图的表格视图
标签: objective-c macos cocoa nstableview autolayout