Это потому, что каждый раз, когда вы добавляете новую метку в ячейку.
Когда вы создаете новую ячейку, вы добавляете метку и присваиваете ей тег
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
// add label here
...
[label setTag:999];
}
Затемкогда вы настраиваете ячейку, используйте [UIView viewWithTag:], чтобы получить ссылку на метку
UILabel *label = (UILabel *)[cell.contentView viewWithTag:999];
update:
Вы должны использовать постоянное значение для тега.Если вы используете indexPath в качестве тега, представление может не быть найдено.Поскольку вы повторно используете ячейку, система создает только определенное количество ячеек.Когда ячейка не видна (не видна), dequeueReusableCellWithIdentifier
получит ячейку для вас, а не создаст новую ячейку.
reusableCell - это представление, которое вы создали ранее.Случай, в котором вы используете динамическое значение для тега, будет выглядеть следующим образом: вы находитесь в ячейке 10 (indexPath), система находит reusableCell, который создается в 3 (indexPath).Так как он был создан в 3, тег label равен 3. Но вы найдете представление с тегом 10, поэтому результат равен нулю.