Вы должны воспользоваться повторным использованием ячеек с вашим UITableView.Просто убедитесь, что вы устанавливаете свойство textLabel.text в ячейке на новое значение.
Таким образом, строка после оператора if должна быть:
cell.textLabel.text = data for this row ...
Вы можете проверить, что это работаетустановив для текста что-то узнаваемое:
cell.textLabel.text = [NSString stringWithFormat:@"row %d", indexPath.row];
Таким образом, даже если вы повторно используете ячейки, вы получите «строку 0», «строку 1» и т. д.
Редактировать для обновления
Таким образом, вам необходимо убедиться, что вы переустанавливаете все внутренние значения после получения объекта ячейки, либо из выделения, либо из dequeueReusableCellWithIdentifier .