私はUIScrollViewを持っている画面を持っています。その中に UITableView が埋め込まれています。私が苦しんでいる問題は、セルの再利用です。問題を明確にするために、ここにいくつかのスクリーンショットを添付します。
スクロール前: 画面が読み込まれるとき。
スクロール中:
上にスクロールして戻ります。
ご覧のとおり、セルの再利用により、日付の代わりに LBM が表示されるようになりました。これは組み込みのグループ テーブル セルであるため、prepForReuse を使用できません。
ここに cellForRowAtIndexPath のコードを添付しています。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath{
static NSString *CellIdentifier = @"Cell";
UITableViewCell * cell = (UITableViewCell *)[tableView
dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1
reuseIdentifier:CellIdentifier] autorelease];
// Here we are creating Custom Label to Display the TakenTime and TakenDate of Vitals
// in center.
if (indexPath.row==0) {
lbl_title = [[UILabel alloc] initWithFrame:CGRectMake(0, 2, 320, 33)];
lbl_title.textAlignment = UITextAlignmentCenter;
lbl_title.font = [UIFont boldSystemFontOfSize:14];
lbl_title.textColor = [UIColor whiteColor];
lbl_title.backgroundColor = [UIColor clearColor];
[cell.contentView addSubview:lbl_title];
}
}
switch (indexPath.row) {
case 0:
lbl_title.text = [NSString stringWithFormat:@"%@ %@",[dic_vitalsDictonary
valueForKey:@"taken_date"],[dic_vitalsDictonary valueForKey:@"taken_time"]];
break;
case 1:
cell.textLabel.text = @"Height";
NSString * str_height = [[dic_vitalsDictonary valueForKey:@"height"] floatValue]
> 0 ? [dic_vitalsDictonary valueForKey:@"height"] : @"";
cell.detailTextLabel.text = [self setDecimalFormatForString:str_height];
break;
case 2:
cell.textLabel.text = @"Weight";
NSString * str_weight = [[dic_vitalsDictonary valueForKey:@"weight"] floatValue] >
0 ? [dic_vitalsDictonary valueForKey:@"weight"] : @"";
cell.detailTextLabel.text = [self setDecimalFormatForString:str_weight];
break;
case 3:
cell.textLabel.text = @"Temperature";
NSString * str_temprature = [[dic_vitalsDictonary valueForKey:@"temp"] floatValue]
> 0 ? [dic_vitalsDictonary valueForKey:@"temp"] : @"";
cell.detailTextLabel.text = [self setDecimalFormatForString:str_temprature];
break;
case 4:
cell.textLabel.text = @"Blood Pressure";
NSString * str_lowbp = [dic_vitalsDictonary valueForKey:@"lowbp"];
NSString * str_highbp = [dic_vitalsDictonary valueForKey:@"highbp"];
cell.detailTextLabel.text = [NSString stringWithFormat:@"%@/%@",[self
setDecimalFormatForString:str_lowbp],[self setDecimalFormatForString:str_highbp]];
break;
case 5:
cell.textLabel.text = @"Blood Sugar";
NSString * str_bs1 = [dic_vitalsDictonary valueForKey:@"bs_1"];
NSString * str_bs2 = [dic_vitalsDictonary valueForKey:@"bs_2"];
cell.detailTextLabel.text = [NSString stringWithFormat:@"%@/%@",[self
setDecimalFormatForString:str_bs1],[self setDecimalFormatForString:str_bs2]];
break;
case 6:
cell.textLabel.text = @"Pulse";
NSString * str_pulse = [[dic_vitalsDictonary valueForKey:@"pulse"] floatValue] > 0
? [dic_vitalsDictonary valueForKey:@"pulse"] : @"";
cell.detailTextLabel.text = [self setDecimalFormatForString:str_pulse];
break;
case 7:
cell.textLabel.text = @"Resp";
NSString * str_resp = [[dic_vitalsDictonary valueForKey:@"resp"] floatValue] > 0 ?
[dic_vitalsDictonary valueForKey:@"resp"] : @"";
cell.detailTextLabel.text = [self setDecimalFormatForString:str_resp];
break;
case 8:
cell.textLabel.text = @"Oxygen";
NSString * str_oxyzen = [[dic_vitalsDictonary valueForKey:@"oxygen"] floatValue] >
0 ? [dic_vitalsDictonary valueForKey:@"oxygen"] : @"";
cell.detailTextLabel.text = [self setDecimalFormatForString:str_oxyzen];
break;
case 9:
cell.textLabel.text = @"Fatmass";
NSString * str_fatmass = [[dic_vitalsDictonary valueForKey:@"fatmass"] floatValue]
> 0 ? [dic_vitalsDictonary valueForKey:@"fatmass"] : @"";
cell.detailTextLabel.text = [self setDecimalFormatForString:str_fatmass];
break;
case 10:
cell.textLabel.text = @"LBM";
NSString * str_lbm = [[dic_vitalsDictonary valueForKey:@"lbm"] floatValue] > 0 ?
[dic_vitalsDictonary valueForKey:@"lbm"] : @"";
cell.detailTextLabel.text = [self setDecimalFormatForString:str_lbm];
break;
case 11:
cell.textLabel.text = @"HC";
NSString * str_hc = [[dic_vitalsDictonary valueForKey:@"hc"] floatValue] > 0 ?
[dic_vitalsDictonary valueForKey:@"hc"] : @"";
cell.detailTextLabel.text = [self setDecimalFormatForString:str_hc];
break;
case 12:
cell.textLabel.text = @"Peakflow";
NSString * str_peakflow = [[dic_vitalsDictonary valueForKey:@"peakflow"]
floatValue] > 0 ? [dic_vitalsDictonary valueForKey:@"peakflow"] : @"";
cell.detailTextLabel.text =[self setDecimalFormatForString:str_peakflow];
break;
default:
break;
}
// Set the Background Image for TableviewCell.
// if 1st row then we are showing different image to Display Vitals Date.
if (indexPath.row==0) {
cell.backgroundColor = [UIColor colorWithPatternImage:[UIImage
imageNamed:@"HeaderNavigation.png"]];
}
else{
// Set the Background Image for TableviewCell.
cell.backgroundColor = [UIColor colorWithPatternImage:[UIImage
imageNamed:@"cell_background.png"]];
}
cell.selectionStyle = UITableViewCellSelectionStyleNone;
return cell;
}
このシナリオを乗り越える方法を提案してください。私は多くのことを試しましたが、意図したとおりに機能するものは何もないようです。スクロール中にセルが繰り返されないように、セルが再利用されないようにしたい。