gpt4 book ai didi

iphone - UITableViewCell 重用良好实践

转载 作者:可可西里 更新时间:2023-11-01 17:09:12 24 4
gpt4 key购买 nike

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {


static NSString *CellIdentifier = @"NotificationViewCell";
CardViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(cell==nil){

NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CardViewCell" owner:self options:nil];
cell = [nib objectAtIndex:0];


cell.contentView.backgroundColor=[UIColor clearColor];
[ModelClass addSublayer:cell.contentView];


cell.cellbg.layer.cornerRadius = 8;
cell.cellbg.layer.masksToBounds = YES;

cell.cellbg.layer.borderWidth = 1;
cell.cellbg.layer.borderColor = [[UIColor grayColor] CGColor];


cell.logoImage.layer.cornerRadius = 8;
cell.logoImage.layer.masksToBounds = YES;

cell.logoImage.layer.borderWidth = 1;
cell.logoImage.layer.borderColor = [[UIColor grayColor] CGColor];



Merchant *merchantList= [self.cardListArr objectAtIndex:indexPath.row];

cell.nameLab.text=merchantList.name;

NSLog(@"merchantList.myloyalty.points=%@",merchantList.myloyalty.points);
// NSLog(@"memberNO=%@",merchantList.myloyalty.memberNO);
cell.integralLab.text=[NSString stringWithFormat:NSLocalizedString(@"points_dot", @"") ,[merchantList.myloyalty.points intValue]];


cell.cardNumberLab.text=[NSString stringWithFormat:@"%@%@",NSLocalizedString(@"ID", nil), merchantList.myloyalty.memberNO];



if(![ModelClass isBlankString:merchantList.introPic])
{
NSLog(@"merchantList.introPic=%@",merchantList.introPic);

[cell.logoImage setImageUrl:merchantList.introPic];


}
}

return cell;

}
  1. 我想用上面的代码重用UITableViewCell,不知道对不对,想请教一下。
  2. 你可以看到我使用 if(cell==nil) 的代码,我想知道我应该写什么代码 if(cell!=nil)(if(cell==nil) else{ 我应该做什么什么可以提高细胞复用})

  3. 如果每个单元格的 View 相同,但高度不同,例如imageview有时是20或40等,如何处理这种情况。

最佳答案

1.这是不正确的,因为你的单元格被重用了,当它被创建时,它不会进入if-statement,所以,在if-statement 你只需要初始化 cell ,你应该在 if-statement 之外编码的 setText 和 setImage 。

比如:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {


static NSString *CellIdentifier = @"NotificationViewCell";
CardViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(cell==nil){

NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CardViewCell" owner:self options:nil];
cell = [nib objectAtIndex:0];


cell.contentView.backgroundColor=[UIColor clearColor];
[ModelClass addSublayer:cell.contentView];


cell.cellbg.layer.cornerRadius = 8;
cell.cellbg.layer.masksToBounds = YES;

cell.cellbg.layer.borderWidth = 1;
cell.cellbg.layer.borderColor = [[UIColor grayColor] CGColor];


cell.logoImage.layer.cornerRadius = 8;
cell.logoImage.layer.masksToBounds = YES;

cell.logoImage.layer.borderWidth = 1;
cell.logoImage.layer.borderColor = [[UIColor grayColor] CGColor];

}

Merchant *merchantList= [self.cardListArr objectAtIndex:indexPath.row];

cell.nameLab.text=merchantList.name;

NSLog(@"merchantList.myloyalty.points=%@",merchantList.myloyalty.points);
// NSLog(@"memberNO=%@",merchantList.myloyalty.memberNO);
cell.integralLab.text=[NSString stringWithFormat:NSLocalizedString(@"points_dot", @"") ,[merchantList.myloyalty.points intValue]];


cell.cardNumberLab.text=[NSString stringWithFormat:@"%@%@",NSLocalizedString(@"ID", nil), merchantList.myloyalty.memberNO];



if(![ModelClass isBlankString:merchantList.introPic])
{
NSLog(@"merchantList.introPic=%@",merchantList.introPic);

[cell.logoImage setImageUrl:merchantList.introPic];


}


return cell;

}

2 大多数人的代码是这样的:

if(cell==nil)
{
//init code
}

// setting code

3.如果要设置单元格高度,则不能在- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

中编写代码

你应该在数据源的方法中编码:- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

代码如下:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (index.row % 2)
return 20.0f;
return 40.0f;
}

关于iphone - UITableViewCell 重用良好实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15106373/

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