Как добраться до текущей выбранной ячейки в didSelectRowAtIndexPath?
Я хочу изменить тип вспомогательного представления ячейки с помощью метода: didSelectRowAtIndexPath , т. е. когда выбрана строка, я хочу изменить тип вспомогательного представления, могу ли я сделать это внутри этого метода ?
6 ответов:
вы можете получить ячейку от didSelectRowAtIndexPath: способ использования indexPath такой.
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath; { UITableViewCell *myCell = [tableView cellForRowAtIndexPath:indexPath]; // Access accessory View as below. UIView * myCellAccessoryView = myCell.accessoryView; }
В Swift 3.0 : вы можете использовать эти 2 пути, согласно вашей потребности
let cell:UITableViewCell = tableView.cellForRow(at: indexPath) as UITableViewCell
или
let cell:CustomTableViewCell = tableView.cellForRow(at: indexPath) as! CustomTableViewCell
Удачи В Кодировании !!
используйте функцию ниже и передайте путь индекса выбранной строки, чтобы конкретная ячейка была перезагружена снова.
- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation
другое решение: сохраните выбранный индекс строки и выполните перезагрузку tableview. Тогда в
cellForRowAtIndexPath
проверьте выбранную строку и измените вспомогательный вид ячейки.
Свифт
вы можете получить ячейку из didSelectRowAtIndexPath: метод с помощью indexPath следующим образом:
let cell:UITableViewCell? = tableView.cellForRowAtIndexPath(indexPath)
сохранить выбранный indexpath. например: NSInteger selectedIndexPath; затем выполните следующие действия. установите свой вид аксессуаров.
-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { AddressTableViewCell *cell=(AddressTableViewCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier]; cell.backgroundColor=[UIColor lightGrayColor]; Address *addr=[self.locationArray objectAtIndex:indexPath.row]; cell.titleLabel.text = addr.addressTitle; cell.detailLabel.text = addr.addressDetail; if (indexPath.row == selectedIndexPath) { [cell.selectButton setImage:[UIImage imageNamed:@"checkboxFilled"] forState:UIControlStateNormal]; } else { [cell.selectButton setImage:[UIImage imageNamed:@"checkbox"] forState:UIControlStateNormal]; } return cell; } -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ selectedIndexPath=indexPath.row; [self.tableView reloadData]; }