基于视图的NSTableView,每个视图包含3个标签,应根据文本调整大小

时间:2013-06-26 14:41:31

标签: cocoa nstableview nspopover

我需要在Popover中创建一个基于视图的tableview,如下所示:

  • Tableview应放在Popover中(Popover高度应与tableview相同)。
  • 每行应包含一个视图。
  • 每个行视图将包含3个标签。
  • 标签应根据文字高度自动调整大小。
  • 基于3个标签高度,单元格行高度应调整大小。
  • 根据所有单元格行,tableview高度应调整大小。
  • 根据tableview高度,Popover应调整大小。

我以静态格式完成此操作,但我需要以更动态的格式执行此操作(将来我应该能够使用相同的类和方法添加更多行)。

我面临的主要问题是,我无法计算tableView:heigthOfRow:中单元格视图的大小,因为我不知道此时的标签文本。 所以我刚刚在loadView本身创建了tableview单元格并保存在数组中,并从tableview委托方法中的数组中取出。但我认为这是错误的做法。

注意:加载视图本身时,将提供所有数据到tableview。标签不可编辑。

1 个答案:

答案 0 :(得分:0)

Cocoa系统根据superview调整子视图的大小,我认为你正在寻找的场景是根据子视图大小调整超级视图的大小。 根据2个解决方案,我可以建议正确的,

1.您可以选择在每个子视图中发布尺寸变化时发布通知,并立即观看超级视图。

2.在case 3标签中使用全局变量作为每个子视图的大小,并在你的基于视图的表视图的视图中使用API​​来计算finalRect。

希望这有帮助:)祝你有个美好的一天。