【发布时间】:2010-12-10 18:48:21
【问题描述】:
我正在使用以下代码设置UITableView 的行高
[tableView setRowHeight: 100.00];
我在UITableView 中使用单行作为分隔符。
即使设置了上面的高度,行的高度也不会改变。
【问题讨论】:
-
设置行高时很重要
标签: iphone uitableview height row
我正在使用以下代码设置UITableView 的行高
[tableView setRowHeight: 100.00];
我在UITableView 中使用单行作为分隔符。
即使设置了上面的高度,行的高度也不会改变。
【问题讨论】:
标签: iphone uitableview height row
我就是这样做的,这里tableobj 在我的应用程序中只是UITableView 对象。
- (void)viewDidLoad
{
[super viewDidLoad];
[tableObj setRowHeight:100.0f];
}
或在numberOfRowsInSection: 中处理类似:
- (NSInteger)tableView:(UITableView *)tblView numberOfRowsInSection:(NSInteger)section {
[tableObj setRowHeight:100.0f];
return [soandso count]; // soandso is my object
}
因为在设置数据源之前设置了rowHeight。它对我有用(对于相同的行高)。
【讨论】:
你应该实现
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
委托方法。并在那里返回 100.0。
【讨论】:
如果所有行的高度相似,则应避免使用heightForRowAtIndexPath 并使用rowHeight 属性。根据文档:
使用 tableView:heightForRowAtIndexPath: 代替 rowHeight 会影响性能。每次显示表视图时,它都会在委托上为其每一行调用 tableView:heightForRowAtIndexPath:,这可能会导致表视图具有大量行(大约 1000 或更多)时出现严重的性能问题。
在 UITableViewController 子类中可以这样做,例如,在 viewDidAppear 方法中(UITableViewController 有对 tableView 的引用):
self.tableView.rowHeight = 79.f;
【讨论】:
更好更简洁的解决方案是实现委托功能(如果你的 UITableView 有很多行,这可能不是最好的......)。
另外,认为 UITableVieCell 是 UIView 所以你可以先改变它们的高度......
代表在 iPhone 开发中非常强大,这里是 UITableViewDelage:
你也可以改变 indentForRow, displayCellForRow, heightForRow,edit stuff.....
【讨论】:
当单元格首次显示时,行高被烘焙到单元格中。
你在设置数据源之前设置了 UITableView#rowHeight 吗?
如果没有,请这样做。
如果由于某种原因你不能,你的另一个选择是在设置行高之后调用 UITableView#reloadData。
【讨论】:
我不认为UITableView中有这样的方法...
相反,您可以使用属性 rowHeight...
尝试,
tableView.rowHeight =100;
【讨论】: