Как добраться до текущей выбранной ячейки в didSelectRowAtIndexPath? - PullRequest
65 голосов
/ 01 июля 2011

Я хочу изменить вспомогательный тип представления ячейки с помощью метода: didSelectRowAtIndexPath, т.е. когда выбрана строка, я хочу изменить вспомогательный вид представления, могу ли я сделать это внутри этого метода?

Ответы [ 6 ]

136 голосов
/ 01 июля 2011

Вы можете получить ячейку из didSelectRowAtIndexPath: метода, используя indexPath , как это.

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
6 голосов
/ 08 января 2017

В Swift 3.0 : вы можете использовать эти 2 способа в соответствии с вашими потребностями

 let cell:UITableViewCell = tableView.cellForRow(at: indexPath) as UITableViewCell

или

let cell:CustomTableViewCell = tableView.cellForRow(at: indexPath) as! CustomTableViewCell

Счастливое кодирование !!

5 голосов
/ 01 июля 2011
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;
{
     UITableViewCell *myCell = [tableView cellForRowAtIndexPath:indexPath];
     // Access accessory View  as below.  
     UIView * myCellAccessoryView = myCell.accessoryView;
}
3 голосов
/ 26 апреля 2016

Swift

Вы можете получить ячейку из метода didSelectRowAtIndexPath: с помощью indexPath, например:

 let cell:UITableViewCell? = tableView.cellForRowAtIndexPath(indexPath)
3 голосов
/ 01 июля 2011

Используйте приведенную ниже функцию и передайте путь индекса выбранной строки, чтобы снова перезагрузить определенную ячейку.

- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation

Другое решение: сохранить индекс выбранной строки и перезагрузить просмотр таблицы.Затем в cellForRowAtIndexPath проверьте выбранную строку и измените вспомогательный вид ячейки.

1 голос
/ 17 июня 2016

Сохранить выбранный путь индекса.например: 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];

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...