Im работает с UITableView
, который имеет пользовательскую ячейку. Пользовательская ячейка имеет только метку и UIImage
, в качестве флажка будет использоваться UIImage
.Когда didDeselect a Custom Cell изображение не изменяется на iOS
Так что проблема заключается в том, что после того, как я нажму на строку, изображение флажка изменится на галочку png-изображения (это нормально). НО, как только я снова нажму на ту же строку, она не влияет на строку, функция didDeselectRowAtIndexPath
работает, я устанавливаю некоторые NSLogs
, чтобы проверить это, но изображение не будет изменено на uncheckbox, а цвет фона не изменится.
я чувствовать его, потому что TableView его не успокоили
Самое смешное в том, что если я не использую пользовательский ячейку и я использую только accessoryType ни одному или галочкой (в зависимости случай) он работает.
Вот код для viewDidLoad
были я просто инициализировать некоторые переменные:
-(void)viewDidLoad
{
[super viewDidLoad];
//Let me select more than one row
self.tableView.allowsMultipleSelection = YES;
//Used to store all the cells that were selected
self.selectedIndexPaths = [[NSMutableArray alloc] init];
}
Я получил 1 Раздел и 20 строк (позже его будет массив, но не тот без проблем)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
CustomeCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
if(cell == nil)
{
cell = [[CustomeCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
}
cell.cellNameDrinkLabel.text = @"Cell";
if ([self.selectedIndexPaths indexOfObject:indexPath] == NSNotFound)
{
cell.cellCheckboxImageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"uncheckbox.png"]];
} else
{
cell.cellCheckboxImageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"checkbox.png"]];
}
return cell;
}
Вот моя didSelectRowAtIndexPath
функция:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
CustomeCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
cell.cellCheckboxImageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"checkbox.png"]];
if(![self.selectedIndexPaths containsObject:indexPath])
{
[self.selectedIndexPaths addObject:indexPath];
}
NSLog(@"%ld", (long)indexPath.row);
}
И здесь я S не didDeselectRowAtIndexPath
функции (один я чувствую это проблема)
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
CustomeCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
cell.cellCheckboxImageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"uncheckbox.png"]];
[self.selectedIndexPaths removeObject:indexPath];
NSLog(@"%ld", (long)indexPath.row);
}
У меня это было раньше, пришлось взломать его ужасно, используя indexPathForVisibleRows, чтобы заставить его работать. Заинтересованы в том, есть ли законное решение. – brandonscript