いくつかのラベルを含むカスタム UITableViewCell と、セルで表される各項目の値に応じて 3 つのアイコンのいずれかになるイメージ ビューがあります。すべてのラベルは適切に更新されていますが、画像名の値は常に nil です。イメージ名は 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;
}
値は、ここに示すテーブル ビュー コントローラーの 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;
}
明らかな何かを見逃しましたか?ありがとう!