我确定这个问题不是唯一的,但我没有找到其他来源来解决它。实际上,这些都引起了更多的困惑。如果可以的话,请轻装上阵。
问题的关键在于我想在自定义单元格的7节30行表的一个单元格中滑动(-50)UILabel。滚动后,其他几行正在移动此标签,并且随着滚动的继续,它们会继续移动得越来越远。
你会注意到负50 x坐标在2个位置进行测试。第一个,在单元格中== nil,永远不会被调用。为什么??我认为这是解决这个问题的地方。
即使单元格为零,也不确定如何调用initWithStyle(不用于自定义)或initWithCoder(在storyboard中创建)。 ??
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.
答案 0 :(得分:1)
单元格不是nil,因为您只是在if语句之前将其分配给可重用单元格。
我会考虑制作一个带有“Date Cell”标识符的二级原型单元格,如果您创建的单元格具有关键字“Date”,则会制作第二组可重复使用的单元格
这里:
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";
static NSString *DateCellIdentifier = @"Date Cell";
UsersTableViewCell *cell;
//Customize Cell
if ([key isEqualToString:@"Date"]) {
cell = [tableView dequeueReusableCellWithIdentifier:DateCellIdentifier];
CGRect frame = cell.comboLabel.frame;
frame.origin.x -= 50;
cell.comboLabel.frame = frame;
NSLog(@" %d, %d\n cell: %@\n", [indexPath section], [indexPath row], cell);
}
else {
cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
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.
事实上,如果您只是在故事板上自定义原型单元格,那么您甚至可能不需要对单元格进行大部分自定义。