我试图在NSTableView中使用NSTableViewCell,并且在禁用滚动时遇到了问题。外部的tableview可视化了一个对象列表(在我的例子中是一个3D材料定义),在我使用的每个单元格内(以及其他控件),另一个表视图表示材料的属性(这是一个可以改变大小的动态列表)。
这很好,除了一件事:
两个tableview都使用动态行高度,这将导致外部表视图单元格将内部表视图折叠为0px高度。是否有一种方法可以禁用内表视图的滚动,并使其使用足够的高度显示所有元素?更复杂的是,属性映射到不同的单元格定义(基于属性的类型),所有这些单元格都是在Interface中设置的。因此,使用NSView并将其类型设置为NSTableView以避免NSScrollView或对所有控件进行编程构造并不是一个真正的选择。
任何提示都是非常感谢的!
发布于 2018-07-07 06:18:05
更新:使用TableViews
您也可以使用NSTableView来实现您想要实现的目标。与UITableView不同,NSTableView不自己做滚动操作。它被包装在一个NSClipView中,它本身封装在一个NSScrollView中。因此,您只需从其中提取tableView并添加一些约束。
接口构建器目前不支持这一点。您不能将tableView从其封闭的clipView中拖出。但是您可以将接口文件作为源代码打开,并删除从scrollView开始的所有内容(除了表本身)。tableView应该在接口生成器中显示得很好(在Xcode 9和10上测试)
您必须在代码中添加约束,但是tableView应该会自行增长。
因为内部表视图不需要滚动,所以您可以只使用NSStackView来布局视图。那么你就不必反抗NSTableView的行为了。如果你需要一个例子,随时可以问!
https://stackoverflow.com/questions/51217383
复制相似问题