Я хочу изменить тип вид аксессуара ячейки через метод: didSelectRowAtIndexPath, то есть когда выбрана строка Я хочу изменить тип вид аксессуара, могу ли я сделать это внутри этого метода?
Как достичь текущей выбранной ячейки в файле didSelectRowAtIndexPath?
Ответ 1
Вы можете получить ячейку из метода didSelectRowAtIndexPath: с использованием indexPath, как это.
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
Ответ 2
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;
{
UITableViewCell *myCell = [tableView cellForRowAtIndexPath:indexPath];
// Access accessory View as below.
UIView * myCellAccessoryView = myCell.accessoryView;
}
Ответ 3
Используйте приведенную ниже функцию и передайте путь указателя к выбранной строке, чтобы снова перезагрузить конкретную ячейку.
- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation
Другое решение: сохранить выбранный индекс строки и выполнить перезагрузку таблицы. Затем в cellForRowAtIndexPath
проверьте выбранную строку и измените вид аксессуаров ячейки.
Ответ 4
Swift
Вы можете получить ячейку из метода didSelectRowAtIndexPath: с использованием indexPath следующим образом:
let cell:UITableViewCell? = tableView.cellForRowAtIndexPath(indexPath)
Ответ 5
В Swift 3.0: вы можете использовать эти 2 способа, в зависимости от ваших потребностей
let cell:UITableViewCell = tableView.cellForRow(at: indexPath) as UITableViewCell
или
let cell:CustomTableViewCell = tableView.cellForRow(at: indexPath) as! CustomTableViewCell
Счастливое кодирование!!
Ответ 6
Сохранять выбранный индексный путь. например: 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];
}