试图了解何时设置了单元格高度。 我有一个在布局中创建的UITableView,而不是代码。
然后:
#define TABLE_VIEW_ROW_HEIGHT 100.0
其次是:
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"Setting row height");
return TABLE_VIEW_ROW_HEIGHT;
}
和
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"Row height: %f", tableView.rowHeight);
// ... other happy stuff that does not change row height but could sure use the real row height
最后一个NSLog报告44而不是100.这意味着该方法中需要获取行高的代码不使用实际高度。
我已经验证了
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
在
之前运行-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
因此,行具有所需的大小,而不是默认大小44。
我是否需要在其他地方明确设置高度?
在进行一些研究后编辑:
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
当不是所有行都具有相同的高度时,...更适合用于设置行的高度。我错误地使用它将所有行设置为相同的高度。
正确的方法是致电
the_tableview.rowHeight = TABLE_VIEW_ROW_HEIGHT;
...来自viewDidLoad之类的地方。我实际上做到了(代码省略)但它没有用。今晚我意识到这是图形布局工具的另一个例子...我忘了为UITableView连接IBOutlet ......所以,我的代码什么都没做,整个tableview仍然保持默认高度44。这就是我从NSLog中获得44分的原因。
答案 0 :(得分:4)
在您的代码中,您在tableView上调用rowHeight而不在IndexPath上的特定行调用。这就是为什么要获得默认值为44的原因。如果要更改默认值,则可以在表的大小检查器中执行此操作。如果所有行具有相同的高度,则更改默认值会更好。如果有不同高度的行,则必须为高度不同的行实现heightForRowAtIndexPath。
您已在代码中定义TABLE_VIEW_ROW_HEIGHT,在这种情况下,您还必须通过为其分配定义的TABLE_VIEW_ROW_HEIGHT名称来设置tableView.rowHeight。