我有一个根视图控制器A,它将segue推送到表视图控制器B.当在B中选择一行时,我想使用展开segue返回A并将行中的文本传回根视图A.然后我使用prepare for segue方法发送stint,如下所示:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
ViewControllerA *vca = (ViewControllerA *)segue.destinationViewController;
vca.textString = [[_objects objectAtIndex:indexPath.row] objectForKey:@"title"];
}
但我不知道该怎么做,就是在didSelectRowAtIndexPath方法中调用unwind segue。
感谢您的帮助。
答案 0 :(得分:13)
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(UITableViewCell *)sender{
ViewControllerA *vca = (ViewControllerA *)segue.destinationViewController;
NSIndexPath *selectedPath = [self.tableView indexPathForCell:sender];
vca.textString = _objects[selectedPath.row][@"title"];
}
答案 1 :(得分:0)
如果要返回视图控制器,则不需要准备segue。您可以直接调用该视图控制器。 Check here.
然后,一旦发送了父视图控制器的属性,就可以弹出当前视图控制器。
[self.navigationController popViewControllerAnimated:yes]
您可以在didSelectRowAtIndexPath中执行所有这些操作。
答案 2 :(得分:0)
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!
}