修复了高度NSTableView,避免滚动

时间:2010-03-04 02:31:17

标签: cocoa macos nstableview

我的NSTableView行的行数非常小。

当我在Interface Builder中创建NSTableView时,NSTableView包含在NSScrollView中。我还没有找到一种方法使表存在于滚动视图的上下文之外。由于表只有少量行,我不希望它滚动。我希望表格根据行数调整大小,我希望底部边框位于最后一行的底部。

如果我按如下方式设置滚动视图的高度,我会得到一个垂直滚动条:

height = (numRows * (rowHeight + intercellSpacingHeight))

如果我向该高度添加一个像素,我没有得到滚动条,但我在最后一行的底部和底部边框之间得到一个额外的像素。

如果取消选中Interface Builder中的“显示垂直滚动条”复选框,则滚动条不会出现,但当我选择最后一行时,表格会向下滚动一个像素。

有没有办法让桌子根本不滚动,并且最后一行的底部边框?

感谢。

2 个答案:

答案 0 :(得分:3)

您总是可以从其封闭的滚动视图中提取NSTableView(在代码中或在IB中)...您可以将表格嵌入到您希望的任何容器中,但是您可以在容器内维护表格的大小(和/或者根据你想做的事情来增加/缩小容器。

答案 1 :(得分:1)

awakeFromNib中你可以写一些像(未经测试的):

NSScrollView *scrollView = [tableView superview];
NSView *container = [scrollView superview];
[[tableView retain] autorelease];
[tableView removeFromSuperview];
[scrollView removeFromSuperview];
[container addSubview:tableView];
[container setFrameSize:[tableView frame].size];

或者,在Interface Builder中,您可以通过更改为列表视图模式(主菜单 - >视图 - >作为列表)从滚动视图中提取表格视图。然后展开视图层次结构,直到看到表格视图。您可以将其拖出滚动视图,但不能拖动到另一个视图中。您可以将其连接到插座并以编程方式将其添加到视图中。

当行数发生变化时,您仍需要更新容器的高度。