Я новичок в iOS, и у меня возникают проблемы с добавлением/удалением сотового аксессуараTypeCheckmark, когда пользователь выбирает ячейку. У меня есть список друзей в UITableView, и пользователь должен иметь возможность выбирать нескольких друзей и иметь галочку рядом с ними. Если пользователь нажимает на друга, который уже был выбран, галочка должна исчезнуть. Я отслеживаю друзей, которые были выбраны в NSMutableArray под названием «friends_selected».Не удается обновить cellaccessory в didSelectRowAtIndexPath
У меня есть путь cellForRowAtIndex, чтобы проверить, содержит ли массив friends_selected имя пользователя, и если да, добавьте галочку.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
FriendsListCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
cell.usernameID.text = [self.friends_username objectAtIndex:indexPath.row];
if ([self.friends_selected containsObject:cell.usernameID.text]) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
else {
cell.accessoryType = UITableViewCellAccessoryNone;
}
return cell;
}
В моей didSelectRowAtIndexPath я добавление или удаление имени пользователя из friends_selected массива и перегрузочные данные таблицы.
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
FriendsListCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
cell.usernameID.text = [self.friends_username objectAtIndex:indexPath.row];
if ([self.friends_selected containsObject:cell.usernameID.text]) {
[self.friends_selected removeObject:cell.usernameID.text];
}
else {
[self.friends_selected addObject:cell.usernameID.text];
}
[tableView reloadData];
}
Сейчас friends_selected массив правильно обновить с помощью которого имена были выбраны или отменить. Не отображаются флажки, однако ячейка станет подсвеченной при выборе и останется подсвеченной, даже если она не выбрана. Любая помощь была бы замечательной, я весь день простаивал по этой проблеме, которая кажется простым решением.
Спасибо, что была проблема! Знал, это было что-то простое. Если вы сделаете это без ввода типа ячейки, вы получите сообщение об ошибке, так что должно быть: FriendsListCell * cell = (FriendsListCell *) [tableView cellForRowAtIndexPath: indexPath]; –
Я забыл бросок. Я обновил ответ. – rmaddy