Использовать функцию раскрутки в didSelectRowAtIndexPath?

У меня есть контроллер корневого представления A, который проталкивает переходы к контроллеру табличного представления B. И когда в B. выбрана строка, я хочу использовать переход с размоткой, чтобы вернуться к A и передать текст в строке обратно в корневое представление. О. И затем я использую метод подготовки к передаче, чтобы отправить ограничение обратно так:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
     ViewControllerA *vca = (ViewControllerA *)segue.destinationViewController;
    vca.textString = [[_objects objectAtIndex:indexPath.row] objectForKey:@"title"];
}

но то, что я не знаю, как это сделать, - это вызвать функцию раскрутки в методе didSelectRowAtIndexPath.

Спасибо за помощь заранее.

3 ответа

Решение

Ничего не звони. Соедините последовательность раскрутки из ячейки в табличном представлении в контроллере B, и последовательность раскрутки будет вызвана касанием ячейки. Вам вообще не нужно реализовывать didSelectRowAtIndexPath. Вы можете получить indexPath в prepareForSegue от отправителя (который будет ячейкой, к которой вы прикоснулись),

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(UITableViewCell *)sender{
     ViewControllerA *vca = (ViewControllerA *)segue.destinationViewController;
     NSIndexPath *selectedPath = [self.tableView indexPathForCell:sender];
     vca.textString = _objects[selectedPath.row][@"title"];
}

SWIFT 4.2 Вот как я делаю это в одном из моих приложений, которое открывает всплывающее меню в виде контроллера модального представления со встроенным табличным представлением, пользователи выбирают данные из таблицы, на которой закрывается контроллер модального представления, и показывают данные из выбранной ячейки в вызывающем контроллере представления.

Вызов ViewController:

@IBAction func unwindFromPopup(segue: UIStoryboardSegue) {
    if segue.source is MyModalViewController {
        if let senderVC = segue.source as? MyModalViewController {
            MyTextField1.text = senderVC.MyID1InModalVC
            MyTextField2.text = senderVC.MyID2InModalVC
            MyTextField3.text = senderVC.MyID3InModalVC
        }
    }
}

Модальный ViewController:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let cell = sender as! UITableViewCell
    let index = cell.convert(CGPoint.zero, to:self.tableView)
    let indexPath = self.tableView.indexPathForRow(at: index)

    // Now that I have the indexPath, I can do my stuff
    let myData = fetchedResultsController.object(at: indexPath!)
    MyID1InModalVC = myData.ID1!
    MyID2InModalVC = myData.ID2!
    MyID3InModalVC = myData.ID3!
}

Вам не нужно готовиться к переходу, если вы хотите вернуться к контроллеру представления. Вы можете просто вызвать этот контроллер вида напрямую. Проверьте здесь.

И затем, как только вы отправите свойство родительского контроллера представления, вы можете просто вытолкнуть текущий контроллер представления.

[self.navigationController popViewControllerAnimated:yes]

Вы можете сделать все это в didSelectRowAtIndexPath.

Другие вопросы по тегам