我知道我可以实现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具有动态高度的行所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)