gpt4 book ai didi

objective-c - 尝试自动调整大小的 UITableViewCell 会导致未知错误

转载 作者:行者123 更新时间:2023-11-29 11:15:08 27 4
gpt4 key购买 nike

我希望我的 tableView 第 1 部分中的单元格自动调整大小,在仔细阅读堆栈溢出后,我找到了一个相当公认的答案并尝试实现它。但是,使用以下代码会导致系统崩溃而不会出现错误。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([indexPath section] == 0) {
return 80;
}
else if([indexPath section] == 1){
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
// NSLog(@"%@", cell.textLabel.text);
// NSString *cellText = cell.textLabel.text;
//
// UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:17.0];
// CGSize constraintSize = CGSizeMake(280.0f, MAXFLOAT);
// CGSize labelSize = [cellText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];
//
// return labelSize.height + 20;
NSLog(@"Hello");
return 120;

}

return 44;

}

但是,如果我像这样删除单元格的创建:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([indexPath section] == 0) {
return 80;
}
else if([indexPath section] == 1){
// NSLog(@"%@", cell.textLabel.text);
// NSString *cellText = cell.textLabel.text;
//
// UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:17.0];
// CGSize constraintSize = CGSizeMake(280.0f, MAXFLOAT);
// CGSize labelSize = [cellText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];
//
// return labelSize.height + 20;
NSLog(@"Hello");
return 120;

}

return 44;

}

错误停止,应用运行正常。注意包含 NSLog,当包含单元格创建时,我认为这会导致堆栈溢出,因为控制台加载了重复的“Hello”。当单元格创建被删除时,这会立即停止,并且 Hello 只说了一次,正如预期的那样。不要介意其余的代码,我主要关心的是为什么添加这一行代码会引起它所做的 react 。

最佳答案

你有所谓的无限递归。通俗地说,这意味着 UITableview 的委托(delegate)方法

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

在调用 [tableView cellForRowAtIndexPath:indexPath]; 时调用。因为您在它最终调用的方法之一中调用了它,所以您创建了一个很好的无限循环,从而打印出 700 万个 NSLog 并使您的应用程序崩溃(当然是在一段时间后)。

关于objective-c - 尝试自动调整大小的 UITableViewCell 会导致未知错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9815401/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com