UITableViewCell动态高度问题

时间:2009-12-03 18:52:01

标签: uitableview

好的我正在研究一个项目,如果我能够以某种方式弄清楚如何更改一个(或所有)单元格以使它们的高度取决于它们所持有的文本量,那将非常有用。我发现internet上的一个教程使它看起来很可行,但我只是因为我正在复制并将代码粘贴到我的应用程序中而被卡住了,并且在他的代码读取的地方弹出一个错误:

NSString *text = [items objectAtIndex:[indexPath row]];

如果有使用本教程的快速修复,或者如果有人可以解释这些项目的全部内容,那就太棒了

4 个答案:

答案 0 :(得分:5)

您可能应该查看表格如何工作以查看数据如何流入其中的其他示例。

然而,当你准备就绪时,你会大致了解如何使用可变高度的细胞:

1)让heightForRowAtIndexPath返回每行的自定义高度

2)在该方法中,弄清楚该行的文本是什么,然后使用方法:

- (CGSize)sizeWithFont:(UIFont *)font forWidth:(CGFloat)width lineBreakMode:(UILineBreakMode)lineBreakMode

(在NSString上,在UIStringDrawingAdditions中)找出要返回的高度(需要文本高度加上一些填充)。宽度是保存文本的标签的宽度,返回的CGSize保存标签在您使用该文本时的高度。

3)在你的单元格中,你必须将行数设置为0,这样它就可以填满,但需要很多。

4)如果您使用的是自定义单元格,则需要确保调整标签高度以适合您放置的文本 - 已根据heightForRowAtIndexPath方法设置单元格高度。我认为一个简单的UITableViewCell可能会让文本标签与单元格一起调整高度,如果不是,你也需要调整它们的大小。

5)将您正在使用的文字设置到标签中,然后享受。

理解的关键是你需要高度真正两倍,一次是在heightForRow(控制单元格高度),然后再在实际设置单元格中的文本时(为了确保标签尺寸合适)

答案 1 :(得分:4)

我认为你领先于自己。您需要了解Objective-C的基础知识,例如数组,字符串等,以及在开始尝试设置自定义行高之前填充表格的基础知识。我建议开始这个帖子:Howto articles of iPhone Development.

我发现Beginning iPhone Development Exploring the iPhone SDK By: Dave Mark; Jeff LaMarche非常有用但我以前在Objective-C中有很强的背景。 Programming in Objective-C 2.0, Second Edition By: Stephen G. Kochan是Objective-C的一个很好的参考。两者都可以通过订阅在线获得,因此您无需花费80美元即可开始使用。

答案 2 :(得分:1)

在此示例中,“items”是一个NSArray,它保存要作为单元格添加到表中的值。通常你会在

中填充这样的数组
-(void)viewDidLoad

-(void)viewWillAppear:(BOOL)animated

因此,一旦您使用此方法提供数据,您链接的教程中的方法就可以正常工作。

您希望在头文件中

NSArray *items;

@property(nonatomic,retain)NSArray *items;

并在您的.m文件中

@synthesize items;

然后在上面列出的任何一种方法中,

self.items = /* however you can build an NSArray with the data you need*/

答案 3 :(得分:0)

变量NSString* text表示要在该单元格中显示的字符串。如果您不知道并且“您的应用”不知道要显示什么,请问您:您希望应用显示什么?有什么数据?