カスタム テーブル セルの更新については多くの質問がありますが、これは奇妙なものです。今のところ、各セルにカスタムUILabel
とUIImageView
.
現在、セルは 2 つしかありません。最初のものは日付を表示します。テーブルが最初に読み込まれると、現在の日付が最初のセルに文字列として表示されますUILabel
。
最初のセルを選択すると、すべての日付の選択を処理するカスタム クラスが表示されます。日付が選択されると、このビューがポップされ、テーブル ビューに戻ります。
に、 tableviews-(void)viewDidAppear
データが再ロードされ、新しく選択された日付が表示されます。
ただし、最初のセルのラベルは更新されません。
問題を混乱させるのは、複数のセルがすべて同じデータを表示している場合、これらはすべて更新され、期待どおりに新しい日付が表示されることです。index: 0 のセル行が更新されないようです。
問題をさらに混乱させるのはUILabel
、セルの文字列値を照会すると、正しい日付が返されることです。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
//
// clears the grouped style border from each table cell
//
UIView *clearBgView = [[UIView alloc]initWithFrame:CGRectZero];
[cell setBackgroundView:clearBgView];
// label
UILabel *dl = [[UILabel alloc]initWithFrame:CGRectMake(70.0f, 10.0f, screenWidth-100, 50)];
[self setDetailsLabel:dl];
dl = nil;
[[self detailsLabel] setBackgroundColor:[UIColor colorWithRed:.1 green:.1 blue:.1 alpha:.1 ]];
[[self detailsLabel] setTextColor:[UIColor colorWithRed:1.0f green:1.0f blue:1.0f alpha:.3f]];
//icon for each cell
UIImageView *ci = [[UIImageView alloc]initWithFrame:CGRectMake(10.0f, 10.0f, 50.0f, 50.0f)];
[ci setBackgroundColor:[UIColor colorWithRed:.2 green:.2 blue:.2 alpha:.2]];
[self setCellIcon:ci];
ci = nil;
//
// set up views
//
[cell addSubview:[self cellIcon]];
[cell addSubview:[self detailsLabel]];
}
// Configure the cell...
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
//populate each by row.
NSString *dateDisplay = [self formatDate:[self dateCaught]];
NSLog (@"date is %@", dateDisplay);
[[self detailsLabel] setText:[self formatDate:[self dateCaught]]];
switch (indexPath.row) { //this needs to be an integer, so return the row of the indexPath.
case 0:
NSLog (@"text for the cell is %@",[[self detailsLabel]text]);
break;
default:
break;
}
return cell;
}