Iphone UITableView单元格高度设置生命周期

Iphone UITableView单元格高度设置生命周期,iphone,uitableview,Iphone,Uitableview,尝试了解何时设置单元格高度。 我有一个UITableView,它是在布局中创建的,而不是在代码中创建的 然后: 其次是: -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { NSLog(@"Setting row height"); return TABLE_VIEW_ROW_HEIGHT; } 及 最近的NSLog报告为44而不是100。

尝试了解何时设置单元格高度。 我有一个UITableView,它是在布局中创建的,而不是在代码中创建的

然后:

其次是:

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@"Setting row height");
    return TABLE_VIEW_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的原因。

在您的代码中,您调用的是tableView上的行高,而不是IndexPath上的特定行。这就是您获得默认值44的原因。如果要更改默认值,则可以在表格的“大小检查器”中进行更改。如果所有行的高度相同,则更改默认值会更好。如果存在具有不同高度的行,则必须为具有不同高度的行实现heightForRowAtIndexPath


您已经在代码中定义了TABLE_VIEW_ROW_HEIGHT,那么在这种情况下,您还必须在代码中设置tableView.rowHeight,方法是将定义的TABLE_VIEW_ROW_HEIGHT名称指定给它。

我接受这一回答,但可以在原始帖子上看到我的编辑(这是我在深入研究后意识到的)。假设设置已到位,如果返回定义的值,则使用heightForRowAtIndexPath设置所有行的高度也会起作用,但这是实现结果的效率较低的方法。
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
the_tableview.rowHeight = TABLE_VIEW_ROW_HEIGHT;