Использовать функцию раскрутки в 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.