この質問は一意ではないと確信していますが、それを解決する他の情報源は見つかりませんでした. 実際、それらはより多くの混乱を引き起こしています。できれば光を当ててください。
問題の核心は、カスタム セルを含む 7 セクション 30ish 行テーブルの 1 つのセルで UILabel をスライド (-50) したいということです。スクロールした後、他のいくつかの行がこのラベルを移動しており、スクロールが続くにつれてどんどん移動し続けます。
マイナス 50 x 座標がテスト用に 2 か所あることに注意してください。セル == nil の最初のものは呼び出されません。どうして??それがこの問題を解決する場所だと思いました。
また、セルが nil の場合でも、initWithStyle (カスタム用ではない) または initWithCoder (ストーリーボードで作成) を呼び出す方法がわかりません。??
NSArray *a = [[userDetailData objectAtIndex:[indexPath section]] objectAtIndex:[indexPath row]];
NSString *key = [[[a objectAtIndex:0] allKeys] objectAtIndex:0];
NSString *value = [[a objectAtIndex:0] valueForKey:key];
static NSString *CellIdentifier = @"MasterCell";
UsersTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
// If cell does not exist, create it, otherwise customize existing cell for this row
if (cell == nil) {
// Create cell
cell = [[UsersTableViewCell alloc] initWithCoder:<#(NSCoder *)#>reuseIdentifier:CellIdentifier];
// Configure cell:
NSLog(@"Key: %@ %d, %d", key, [indexPath section], [indexPath row]);
// Prepare the date field to move left for checkmark or ex-mark
if ([key isEqualToString:@"Date"]) {
CGRect frame = cell.comboLabel.frame;
frame.origin.x -= 50;
cell.comboLabel.frame = frame;
NSLog(@"In Date... minus 50");
}
}
// Customize cell:
CGRect frame = cell.comboLabel.frame;
if ([key isEqualToString:@"Date"]) {
frame.origin.x -= 50;
cell.comboLabel.frame = frame;
NSLog(@" %d, %d\n cell: %@\n", [indexPath section], [indexPath row], cell);
}
else {
frame.origin.x += 0;
cell.comboLabel.frame = frame;
}
// Reset color
cell.comboLabel.textColor = [UIColor blackColor];
// Set the Item
cell.nameLabel.text = [NSString stringWithFormat: @" %@",key];
// Give the cell an accessory indicator
..... continue on with logic.