IndexPath для перехода от accessoryButton - PullRequest
9 голосов
/ 18 февраля 2012

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

  1. Свяжите основной переход между UITableViewCell и ViewController
  2. Свяжите вторичный переход от родительского ViewController к новому ViewController
  3. Выполните accessoryButtonTappedForRowWithIndexPath следующим образом:

    -(void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath {
        [self performSegueWithIdentifier:@"DetailSegue" sender:self];
    }
    

Это прекрасно работает, и мой prepareForSegue: sender: вызывается, как и ожидалось.Проблема в том, что мне нужно знать indexPath для выбранного элемента.Последовательность из UITableViewCell получает indexPath следующим образом:

NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];

К сожалению, когда я пытаюсь сделать это, вызвав accessoryButton, он возвращает null.

Исходный вопрос, который я задаючасть этого кода выключена здесь: Кнопка раскрытия подробностей и сегменты

Есть ли метод tableView, который возвращает indexPath для accessoryButtons?Нужно ли мне получать доступ к indexPath каким-либо другим способом?

Ответы [ 2 ]

16 голосов
/ 20 февраля 2013

Вам не нужно переопределять accessoryButtonTappedForRowWithIndexPath.

В prepareForSegue при работе с кнопкой раскрытия подробностей вместо:

[self.tableView indexPathForSelectedRow]

использование:

[self.tableView indexPathForCell:sender]

Отправитель уже является ячейкой кнопки раскрытия информации.

13 голосов
/ 18 февраля 2012

Аргумент sender, согласно документации:

Объект, который вы хотите использовать для инициирования перехода.Этот объект сделан доступным для информационных целей во время фактической передачи.

Я не вижу никаких причин, почему вы не можете использовать путь индекса в качестве отправителя вместо self, а затем получить доступ кпуть индекса в prepareForSegue:.

Если это не сработает, сохраните путь индекса в ivar и получите доступ к нему в prepareForSegue

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