Я создаю контроллер с UITableview, который содержит 2 раздела. Во втором разделе у меня есть список пользователей, которым я хочу добавить галочку для пользователя в списке, когда я нажимаю на конкретную строку. У меня есть проблема, из-за которой после того, как я нажимаю на пользователя и прокручиваю ячейку со страницы, ячейка возвращается с полем «имя» ПУСТО (см. Скриншот ниже). Я знаю, что это связано с тем, как клетки используются повторно, но я не могу разобраться с точным вопросом. Мой код размещен ниже. Любой совет?
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString* ShareOnCellIdentifier = @"ShareOnholderCell";
static NSString* WhoShouldAnswerCellIdentifier = @"WhoShouldAnswerCell";
int row = [indexPath row];
User *user = [self.friendsToShareWithArray objectAtIndex:row];
if (indexPath.section == 0)
{
UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:ShareOnCellIdentifier];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ShareOnCellIdentifier];
}
cell.textLabel.text = [self.shareOnArray objectAtIndex:indexPath.row];
return cell;
}
else
{
UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:WhoShouldAnswerCellIdentifier];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:WhoShouldAnswerCellIdentifier];
}
cell.textLabel.text = user.nickname;
if (user.isSelected)
{
cell.selectionStyle = UITableViewCellAccessoryCheckmark;
}
else
{
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
return cell;
}
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
User *user = [self.friendsToShareWithArray objectAtIndex:indexPath.row];
if (indexPath.section == 1)
{
UITableViewCell* cell = [tableView cellForRowAtIndexPath:indexPath];
if (cell.accessoryType == UITableViewCellAccessoryCheckmark)
{
cell.accessoryType = UITableViewCellAccessoryNone;
user.isSelected = NO;
}
else
{
cell.accessoryType = UITableViewCellAccessoryCheckmark;
user.isSelected = YES;
}
}
}
РЕДАКТИРОВАТЬ: Пример того, как я создаю свой пользовательский объект
User *user1 = [[User alloc]init];
user1.nickname = @"Dionis";
user1.uid = @"1";
user1.isSelected = NO;