@Artem_AK

Как получить индекс нажатой accessory button?

Проблема в том, что метод в котором можно получить индекс нажатой accessory button
- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath{}

отрабатывает после
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {}

А в prepareForSegue этот индекс планирую использовать.
Как получить индекс нажатой accessory button, до отработки метода prepareForSegue?
Спасибо!

UPD
Решение:
- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath
{
    [self performSegueWithIdentifier:@"details" sender:indexPath];

}

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"workout"]) {
        
        UITableViewCell *cell = (UITableViewCell*)sender;
        NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
        
        WorkoutTVC *wvc = (WorkoutTVC *) segue.destinationViewController;
        wvc.workoutName = [self.listOfWorkoutNames objectAtIndex:indexPath.row];
    }
    else if ([segue.identifier isEqualToString:@"details"]) {
        
        NSIndexPath *indexPath = [sender isKindOfClass:[NSIndexPath class]] ? (NSIndexPath*)sender : [self.tableView indexPathForSelectedRow];
        
        WorkoutDetailsVC *wdvc = (WorkoutDetailsVC *) segue.destinationViewController;
        wdvc.workoutName = [self.listOfWorkoutNames objectAtIndex:indexPath.row];
    }
}
  • Вопрос задан
  • 264 просмотра
Решения вопроса 1
Flanker_4
@Flanker_4
Я не совсем понимаю, что Вы делаете. В идеале, прикреплять к вопросу проект-пример с демонстрацией проблемы

Но Вам должно помочь следующее - в методе
- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath{}

"Сохранить" indexPath и вручную вызвать
[self performSegueWithIdentifier:@"SEGUE_ID" sender:self]; //*

*Это только если делегат UITableView является UIViewController, а у Вас наверняка так)
Ну и конечно же, нужно убрать предыдущий performSegue, явный , или тот что вы цепляли в InterfaceBuilder'e
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы