objective-c – 基于视图的NSTableView具有动态高度的行

objective-c – 基于视图的NSTableView具有动态高度的行,第1张

概述我有一个应用程序与基于视图的NSTableView在它。在这个表视图中,我有行的单元格的内容包含一个多行NSTextField启用的自动换行。根据NSTextField的文本内容,显示单元格所需的行的大小会有所不同。 我知道我可以实现NSTableViewDelegate方法-tableView:heightOfRow:返回高度,但高度将根据NSTextField上使用的单词包装确定。 NSTex 我有一个应用程序与基于视图的NStableVIEw在它。在这个表视图中,我有行的单元格的内容包含一个多行NSTextFIEld启用的自动换行。根据NSTextFIEld的文本内容,显示单元格所需的行的大小会有所不同。

我知道我可以实现NStableVIEwDelegate方法-tableVIEw:heightOfRow:返回高度,但高度将根据NSTextFIEld上使用的单词包装确定。 NSTextFIEld的单词包装类似地基于NSTextFIEld的宽度…这由NStableVIEw的宽度决定。

Soooo …我想我的问题是…什么是好的设计模式?似乎一切我试图卷起来是一个复杂的混乱。因为tableVIEw需要知道单元格的高度来布置它们…并且NSTextFIEld需要知道它的布局来确定单词wrap …并且单元格需要知道单词wrap以确定它的高度…它是一个圆形的混乱…和它驱动我疯了。

建议?

如果重要,最终结果也将有可编辑的NSTextFIElds将调整大小以适应其中的文本。我已经有这个工作在视图级别,但tablevIEw尚未调整单元格的高度。我计算一旦我得到高度问题解决了,我会使用-noteHeightOfRowsWithIndexesChanged方法来通知表视图的高度改变…但它仍然然后要问代表的高度…因此,我的quandry。

提前致谢!

解决方法 这是鸡和鸡蛋的问题。表需要知道行高,因为它决定了给定视图的位置。但是你想要一个视图已经在周围,所以你可以使用它来计算出行高。那么,哪个先到?

答案是保持一个额外的NStableCellVIEw(或任何视图,你正在使用作为你的“单元格视图”),只是为了测量视图的高度。在tableVIEw:heightOfRow:delegate方法中,访问’row’的模型并在NStableCellVIEw上设置objectValue。然后将视图的宽度设置为表格的宽度,然后(但是您想要这样做),计算该视图所需的高度。返回该值。

不要调用noteHeightOfRowsWithIndexesChanged:from在委托方法tableVIEw:heightOfRow:或vIEwFortableColumn:row:!这是坏的,会造成大麻烦。

动态更新高度,您应该做的是响应文本更改(通过目标/ *** 作),并重新计算视图的计算高度。现在,不要动态改变NStableCellVIEw的高度(或者你使用的任何视图作为你的“单元格视图”)。该表必须控制该视图的框架,如果您尝试设置它,您将与tablevIEw对抗。相反,在您计算高度的文本字段的目标/ *** 作中,调用noteHeightOfRowsWithIndexesChanged:,这将让表调整该行的大小。假设你有自动调整掩码设置权限在子视图(即:NStableCellVIEw的子视图),事情应该调整大小!如果没有,首先在子视图的大小调整掩码上工作,以获得与可变行高一致的东西。

不要忘记noteHeightOfRowsWithIndexesChanged:默认为动画。让它不动画:

[NSAnimationContext beginGrouPing];[[NSAnimationContext currentContext] setDuration:0];[tableVIEw noteHeightOfRowsWithIndexesChanged:indexSet];[NSAnimationContext endGrouPing];

PS:我回答更多的问题发布在苹果开发论坛比堆栈溢出。

PSS:我写了基于视图的NStableVIEw

总结

以上是内存溢出为你收集整理的objective-c – 基于视图的NSTableView具有动态高度的行全部内容,希望文章能够帮你解决objective-c – 基于视图的NSTableView具有动态高度的行所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1049079.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存