У меня есть UITableView с 3 пользовательских UITableViewCells, что я в настоящее время, так как извлечение из очереди:пользовательских UITableViewCell не правильно
if (indexPath.row == 0) {
static NSString *CellIdentifier = @"MyCell1";
MyCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[MyCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
return cell;
}
if (indexPath.row == 1) {
static NSString *CellIdentifier = @"MyCell2";
MyCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[MyCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
return cell;
}
if (indexPath.row == 2) {
static NSString *CellIdentifier = @"MyCell3";
MyCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[MyCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
return cell;
}
Я пытался сделать это несколько способов, но проблема в том, даже если я m все еще деактивирует их все с разными идентификаторами, когда я просматриваю таблицуView вокруг, иногда моя первая ячейка появляется в местоположении моей третьей ячейки и наоборот. Кажется, происходит какое-то странное кэширование.
Кто-нибудь знает, почему? Благодарю.
Что делать, если вы удалите «статический» из объявления идентификатора ячейки? –
Это не имеет значения. В документации Apple даже они используют статический NSString * CellIdentifier. – VTS12
Вы действительно должны иметь три разные идентификационные переменные, поскольку у вас есть три разных значения. Статика только инициализируется один раз. Нигде я этот код, кажется, на самом деле не помещает какую-либо информацию в ячейки, где вы это делаете? Можете ли вы включить скриншот проблемы? И действительно ли есть только три ряда? – jrturton