如何更改UITableView的高度以适应其动态内容?

Cra*_*aig 3 uitableview ios

我已经包含一个细胞,又包含一个TTTextEditor(一Three20控制),这对于所有意图和目的是一个UITextView一个UITableView.我正在使用TTTextEditor,因此用户可以输入动态数量的文本,并且当控件调整大小时,我正在使用委托方法来相应地增加包含单元格的高度.到现在为止还挺好.

当我完成编辑后,当单元格现在更高时,表格不再滚动到足以覆盖内容.我假设我需要调整表格的高度以补偿单元格高度的增加,但无论我尝试什么似乎都没有效果.从阅读,我正在尝试这个:

CGRect frame = [self.tableView frame];
CGSize contentSize = self.tableView.contentSize;

[self.tableView setFrame:CGRectMake(frame.origin.x, 
                                    frame.origin.y, 
                                    frame.size.width, 
                                    contentSize.height)];
Run Code Online (Sandbox Code Playgroud)

但它不起作用 - 框架高度确实增加,但没有增加到正确的高度,并且在任何情况下,桌子不会滚动它原来的更多.我也在tableView上尝试了sizeToFit方法但没有成功.

有没有人能够深入了解如何让tableview的可滚动高度增加?

Mic*_*ine 5

你需要设置contentSize不是frame.计算大小应该是什么,然后设置它.这可能需要您进行一些计算.如果您正在处理文本,那么您可能希望查看添加到NSString被调用的方法sizeWithFont:constrainedToSize:lineBreakMode:.另一方面,您的框架应始终是可视区域的大小,而不是可滚动区域.

编辑:请注意,对于那时没有改变的初始布局,您可能希望使用标准的表委托机制- (CGFloat) tableView: (UITableView *) tableView heightForRowAtIndexPath: (NSIndexPath *) indexPath,但是当需要像这种情况那样动态更改时,我认为调整内容大小值得一试.