Строка indexpath не попадает в готовность к segue для подробного раскрытия - программирование
Подтвердить что ты не робот

Строка indexpath не попадает в готовность к segue для подробного раскрытия

 if([segue.identifier isEqualToString:@"Edit"]){

    AddCoffeeViewController *avc = [segue destinationViewController];

    Coffee *coffeeObj = [appDelegate.coffeeArray objectAtIndex:arow];
    NSLog(@"ViewController.m prepareForSegue: arow: %d coffeeName:%@ price:%@      coffeeID:%d",arow,coffeeObj.coffeeName,coffeeObj.price,coffeeObj.coffeeID);
    [coffeeObj setIsInEditMode:YES];
    avc.EditCoffeeObj = coffeeObj;


}

Я не получаю правильную строку, когда нажимаю кнопку аксессуара.

Хотя в методе ниже я получаю правильную строку. Есть ли способ, которым я могу получить правильную строку, готовьтесь к segue, если я не хочу использовать нивара.

-(void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath{

arow = indexPath.row;

}

enter image description here


Кнопка приставки tableViewCell: Выполнение модального сегмента (Edit)
+ Кнопка (кнопка панели навигации Элемент): Выполнение модального сегмента (Добавить)

4b9b3361

Ответ 1

Если вы подключили аксессуар в своем раскадровке, то sender в prepareForSegue:sender: будет ячейкой, которая была прослушена. Это означает, что вы можете просто сделать что-то вроде

NSIndexPath *indexPath = [self.tableView indexPathForCell:sender];

Ответ 2

Кнопка выбора аксессуаров и выбранная строка - это две разные вещи. В аксессуарButtonTappedForRowWithIndexPath просто установите indexPath в глобальную переменную, а затем используйте это в сегменте.

Ответ 3

SWIFT 3.0 Решение; Очень похож на версию Objective-C. Итак, Cell является отправителем, и мы получаем indexPath через Ячейка, в которой аксессуар нажат

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if let destination = segue.destination as? YourViewController {
        let indexPath = tableView.indexPath(for: sender as! UITableViewCell)!
    }
}