gpt4 book ai didi

ios - 难以在自定义 UITableViewCell 中设置属性

转载 作者:行者123 更新时间:2023-11-29 13:01:37 24 4
gpt4 key购买 nike

我有一个自定义的 UITableViewCell,它包含多个标签和一个 ImageView , ImageView 可以是三个图标之一,具体取决于单元格表示的每个项目中的值。我所有的标签都正确更新,但图像名称的值始终为零。图像名称被声明为 NSString 类型的属性。

自定义单元格称为 FavoriteCell,除 NSString 值“imgName”外,所有值都设置正确

FavoriteCell.h:

@interface FavoriteCell : UITableViewCell

@property (nonatomic, strong) UILabel *lblMainTitle;
@property (nonatomic, strong) UILabel *lblGaugeID;
@property (nonatomic, strong) UILabel *lblGaugeLastUpdate;
@property (nonatomic, strong) UILabel *lblGaugeHeight;
@property (nonatomic, strong) UILabel *lblGaugeCFS;
@property (nonatomic, strong) UIImage *bgImage;
@property (nonatomic, strong) UIImageView *goodToGoImage;
@property (nonatomic, strong) NSString *imgName;

@end

FavoriteCell.m:

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
bgImage = [UIImage imageNamed:@"tableCellBG.png"];
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];

if (self) {
UIColor *transparentBG = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.0];

CGSize size = self.contentView.frame.size;
//self.backgroundView = [[UIImageView alloc] initWithImage:bgImage];
self.lblMainTitle = [[UILabel alloc] initWithFrame:CGRectMake(8.0, -10, size.width-20, size.height-40)];
[self.lblMainTitle setFont:[UIFont boldSystemFontOfSize:15]];
[self.lblMainTitle setTextAlignment:NSTextAlignmentLeft];
[self.lblMainTitle setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)];
[self.lblMainTitle setBackgroundColor:transparentBG];

self.lblGaugeID = [[UILabel alloc] init];

self.lblGaugeLastUpdate = [[UILabel alloc] initWithFrame:CGRectMake(9, 14, size.width-40, size.height)];
[self.lblGaugeLastUpdate setFont:[UIFont systemFontOfSize:14]];
[self.lblGaugeLastUpdate setBackgroundColor:transparentBG];

self.lblGaugeHeight = [[UILabel alloc] initWithFrame:CGRectMake(8, 45, size.width-40, size.height)];
[self.lblGaugeHeight setFont:[UIFont boldSystemFontOfSize:21]];
[self.lblGaugeHeight setBackgroundColor:transparentBG];

self.lblGaugeCFS = [[UILabel alloc] initWithFrame:CGRectMake(120, 45, size.width-40, size.height)];
[self.lblGaugeCFS setFont:[UIFont boldSystemFontOfSize:21]];
[self.lblGaugeCFS setBackgroundColor:transparentBG];

NSLog(@"IMAGE NAME: %@\n", imgName); // imgName is nil

UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(220, 40, 40, 40)];
[imgView setImage:[UIImage imageNamed:imgName]];

[self.contentView addSubview:lblMainTitle];
[self.contentView addSubview:lblGaugeHeight];
[self.contentView addSubview:lblGaugeLastUpdate];
[self.contentView addSubview:lblGaugeCFS];
[self.contentView addSubview:imgView];

self.editingAccessoryType = UITableViewCellAccessoryDetailButton;
}
return self;
}

这些值是在我的 TableView Controller 的 cellForRowAtIndexPath 方法中设置的,此处显示。现在,我只是硬编码一个测试值。硬编码值不会转移到自定义单元格。

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

FavoriteCell *cell = (FavoriteCell*)[tableView dequeueReusableCellWithIdentifier:cellID];
if(cell == nil){
cell = [[FavoriteCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID];
}
Favorite *fave = [allFavoriteObjects objectAtIndex:indexPath.row];

NSString *currFeet = [NSString stringWithFormat:@"%.02fft", [fave.currentFeet doubleValue]];
NSString *currFlow = [NSString stringWithFormat:@"%dcfs", [fave.currentCFS intValue]];


[cell setImgName:@"thumbsUp.png"];
[cell.lblMainTitle setText:[fave stationRealName]];
[cell.lblGaugeID setText:[fave stationIdentifier]];
[cell.lblGaugeCFS setText:currFlow];
[cell.lblGaugeHeight setText:currFeet];
return cell;
}

我是否遗漏了一些明显的东西?谢谢!

最佳答案

这是正常的,因为当你没有设置 imgName 时你的代码正在运行,你设置它然后你的初始化代码运行。fox fix 它从您的自定义单元格中删除代码 UIImage 和 NSString 并将其设置到您的 imageView 中,然后当您将单元格放入 -tableView:cellForRowAtIndexPath:imageView.image = [UIImage imageNamed:@"thumbsUp.png"];

关于ios - 难以在自定义 UITableViewCell 中设置属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19639708/

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