Так что у меня действительно странная проблема. Мой код отлично работает на iOS 8, но не на iOS 7, и я не могу понять, почему.UITableViewCell не обновляется после выбора на iOS 7
У меня есть таблица, в которой есть список элементов, которые при выборе элемента галочка добавляются к этому элементу, и если вы выберете его снова, галочка будет удалена. Довольно просто? : -p Как я уже сказал, он отлично работает на iOS 8, но когда я запускаю против iOS 7.1, подсветка ячейки добавляет галочку и удаляет старый заголовок и заменяет его по умолчанию Заголовок. Впоследствии, независимо от того, сколько раз я нажимаю на ячейку, она никогда не изменяется (но базовые данные меняются).
перед выбором
После выбора
Если я выйти из экрана и вернуться к нему, строки отображаются правильно. Я проверил, что cellForRowAtIndexPath вызывается, и правильные значения добавляются в ячейку.
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
// Return the number of sections.
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
return [[parkFinderSingleton.data valueForKey:@"amenities"] count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"amenityFilterCell" forIndexPath:indexPath];
Amenity *currentAmenity;
NSArray *amenities = [parkFinderSingleton.data valueForKey:@"amenities"];
if (amenities != nil) {
currentAmenity = amenities[indexPath.row];
cell.textLabel.text = currentAmenity.amenityTitle;
NSLog(@"Cell Title %@", cell.textLabel.text);
if (currentAmenity.amenitySelected) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
} else {
cell.accessoryType = UITableViewCellAccessoryNone;
}
}
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"amenityFilterCell" forIndexPath:indexPath];
Amenity *currentAmenity;
NSArray *amenities = [parkFinderSingleton.data valueForKey:@"amenities"];
if (amenities != nil) {
currentAmenity = amenities[indexPath.row];
if (currentAmenity.amenitySelected) {
currentAmenity.amenitySelected = NO;
cell.accessoryType = UITableViewCellAccessoryNone;
} else {
currentAmenity.amenitySelected = YES;
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
}
[self.tableView beginUpdates];
[self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
[self.tableView endUpdates];
}
Любые мысли относительно того, что может произойти?