gpt4 book ai didi

ios - 为什么我的 UITableView 不使用单元格原型(prototype)?

转载 作者:行者123 更新时间:2023-11-29 03:14:23 25 4
gpt4 key购买 nike

所以这是我的代码,但它不起作用

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier;
if (indexPath.row == 0)
{
// buttonCell
CellIdentifier = @"buttonCell";
buttonCell *cell = (buttonCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
cell.startAddressLabel.text = @"something";

//cell config
//debug
NSLog(@"indexPath.row: %d", indexPath.row);
NSLog(@"Cell Identifier: %@", CellIdentifier);

return cell;
} else if (indexPath.row == 1)
{
//mutableCaptionCell date&time
CellIdentifier = @"mutableCaptionCell";
mutableCaptionCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

//cell config
cell.infoLabel.text = @"Время и дата";
cell.contentLabel.text = @"";

//debug
NSLog(@"indexPath.row: %d", indexPath.row);

return cell;

} else if (indexPath.row == 2)
{
//mutableCaptionCell tax
CellIdentifier = @"mutableCaptionCell";
mutableCaptionCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

//cell config
cell.infoLabel.text = @"Тариф";
cell.contentLabel.text = @"";

//debug
NSLog(@"indexPath.row: %d", indexPath.row);

return cell;
} else if (indexPath.row == 3)
{
//mutableCaptionCell car
CellIdentifier = @"mutableCaptionCell";
mutableCaptionCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

//cell config
cell.infoLabel.text = @"Выбор машины на карте";
cell.contentLabel.text = @"";

//debug
NSLog(@"indexPath.row: %d", indexPath.row);

return cell;
} else if (indexPath.row == 4)
{
//wishCell wishlist
CellIdentifier = @"wishCell";
WishCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

//cell config
cell.infoLabel.text = @"Пожелания";
cell.contentLabel.text = @"";

//debug
NSLog(@"indexPath.row: %d", indexPath.row);

return cell;
} else
{
//debug
NSLog(@"indexPath.row: %d", indexPath.row);
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"mutableCaptionCell" forIndexPath:indexPath];

// Configure the cell...
cell.textLabel.text = @"ERROR CELL";

//debug
//NSLog(@"indexPath.row: %d", indexPath.row);

return cell;

;
}

}

我已经说过每个原型(prototype)的 UITableViewCell 子类,重用标识符与每个原型(prototype)匹配,但我在运行时看到的 UITableView 似乎没有使用这些原型(prototype)。例如,第一个单元格必须是带有两个按钮的巨大单元格,但它显示为空。我 NSLoged 一切,日志显示:

2014-02-18 10:13:51.587 app[1624:70b] indexPath.row: 0
2014-02-18 10:13:51.590 app[1624:70b] Cell Identifier: buttonCell
2014-02-18 10:13:51.594 app[1624:70b] cell: <buttonCell: 0x8b95e00; baseClass = UITableViewCell; frame = (0 0; 320 44); autoresize = W; layer = <CALayer: 0x8b96000>>
2014-02-18 10:13:51.600 app[1624:70b] indexPath.row: 1
2014-02-18 10:13:51.603 app[1624:70b] indexPath.row: 2
2014-02-18 10:13:51.606 app[1624:70b] indexPath.row: 3
2014-02-18 10:13:51.610 app[1624:70b] indexPath.row: 4

但 TableView 仍然没有使用正确的原型(prototype)。

我正在尝试使用动态原型(prototype),因为我需要在运行时更改一些单元格的高度,也许有一种方法可以对静态单元格进行更改?

Sidenote: Im using Xcode 5 for iOS 7

最佳答案

我的猜测是,您没有初始化单元格,dequeueReusableCellWithIdentifier 还不够。它会重用已创建的单元格,因此如果出队结果为 nil,您应该首先分配 cell

可能:

if (indexPath.row == 0)
{
// buttonCell
CellIdentifier = @"buttonCell";
buttonCell *cell = (buttonCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];


if(!cell)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewStylePlain reuseIdentifier:CellIdentifier];
}

cell.startAddressLabel.text = @"something";

//cell config
//debug
NSLog(@"indexPath.row: %d", indexPath.row);
NSLog(@"Cell Identifier: %@", CellIdentifier);

return cell;
}

或者使用 IB 设计的称重传感器:

if (indexPath.row == 0)
{
// buttonCell
CellIdentifier = @"buttonCell";
buttonCell *cell = (buttonCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];


if(!cell)
{
cell = [[[NSBundle mainBundle] loadNibNamed:@"MyCustomCell" owner:nil options:nil] objectAtIndex:0]; // Assign reuseIdentifier from IB
}

cell.startAddressLabel.text = @"something";

//cell config
//debug
NSLog(@"indexPath.row: %d", indexPath.row);
NSLog(@"Cell Identifier: %@", CellIdentifier);

return cell;
}

希望对您有所帮助!

关于ios - 为什么我的 UITableView 不使用单元格原型(prototype)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21845833/

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