gpt4 book ai didi

iphone - 在 UITableView 中添加多个自定义单元格

转载 作者:行者123 更新时间:2023-12-03 18:35:26 27 4
gpt4 key购买 nike

虽然这是最常被问到的问题之一,但我找不到一个全面的答案。我需要在 UITableView 中有自定义单元格。有些包含标签或文本字段,有些包含图像和按钮。我为每种类型的细胞制作了单独的类。我正在使用包含多个部分的 GroupStyle 表。现在,我在 cellForIndexPath 中添加单元格,并使用 switch-case 表示部分,使用 if-else 表示部分中的行:

id cell;
switch(indexPath.section) {
case 0:
if(indexPath.row==0) {
CellA *cell = [[[CellA alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:[NSString stringWithFormat:@"Celld%",indexPath.row]] autorelease];
//configure cell
return cell;
}
else if(indexPath.row==1) {
CellB *cell = [[[CellB alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:[NSString stringWithFormat:@"Celld%",indexPath.row]] autorelease];
//configure cell
return cell;
}
break;
case 1:
if(indexPath.row==0) {
CellC *cell = [[[CellC alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:[NSString stringWithFormat:@"Celld%",indexPath.row]] autorelease];
//configure cell
return cell;
}
break;
default:
break;
}
return cell;

我还必须在最后返回单元格,因为由于代码块内单元格的定义,单元格变得无法识别。为了解决这个问题,我在顶部声明了带有 id 的单元格。但我知道这不是正确的方法。如何解决多种类型单元格的声明和访问问题?

目前有 4-5 行适合一个屏幕并且不需要滚动。所以,我不会重复使用细胞。但编辑时会挤入更多行。在另一个表中,有更多的行可以滚动屏幕。这意味着我必须重复使用细胞。所以,我的问题的第二部分是;如何重用多个自定义单元格?

最佳答案

要回答你的第一个问题,你也可以返回nil,因为你没有什么好的返回值(value)。如果遇到这种情况,就会抛出异常;就像现在一样,它可能会在框架代码内的某个位置为您提供 EXC_BAD_ACCESS。

要回答你的第二个问题,每种类型的单元都应该有一个唯一的reuseIdentifier。例如,所有 CellA 都可以具有@“CellA”的重用标识符。然后,您将完全重用它们,就像在所有单元格都相同的情况下一样:当您需要 CellA 调用时 [tableView dequeueReusableCellWithIdentifier:@"CellA"] 时,当您需要 CellB 调用时 [tableView dequeueReusableCellWithIdentifier:@"CellB"],等等。例如,

    case 0:
if (indexPath.row == 0) {
CellA *cell = [tableView dequeueReusableCellWithIdentifier:@"CellA"];
if (!cell) {
cell = [[[CellA alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"CellA"] autorelease];
}
// configure cell
return cell;
}
else if (indexPath.row == 1) {
CellB *cell = [tableView dequeueReusableCellWithIdentifier:@"CellB"];
if (!cell) {
cell = [[[CellB alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"CellB"] autorelease];
}
// configure cell
return cell;
}
break;
case 1:
if (indexPath.row == 0) {
CellC *cell = [tableView dequeueReusableCellWithIdentifier:@"CellC"];
if (!cell) {
cell = [[[CellC alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"CellC"] autorelease];
}
// configure cell
return cell;
}
break;

关于iphone - 在 UITableView 中添加多个自定义单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5575125/

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