我有一个ViewController,我将segue调用到另一个ViewController:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == blogSegueIdentifier {
let destination = segue.destination as! Reply
let path = tableView.indexPathForSelectedRow
let cell = tableView.cellForRow(at: path!) as! QuestionsTabCell
destination.blogName = String(cell.labelQues!.tag)
}
}
在打开的segue(ViewController)中,UINavigationBar中有一个UITextView和一个发送按钮。因此,用户输入textView并将其发送到服务器,点击按钮,然后在此打开的segue(ViewController)关闭,用户返回到第一个ViewController。如何在用户关闭segue时调用第一个ViewController中的方法而不使用viewWillAppear?
答案 0 :(得分:1)
Hello @Mr Jo您可以使用unwind segue来实现此目的。
在你的第一个viewController中声明一个方法,如: -
//MARK: - - Unwind Segue get data from select categories @IBAction func unwindToAssignCatController(segue: UIStoryboardSegue) { //get back data from selectcategory class if segue.identifier == "segueIdentifier"{ let controller = segue.source as! Reply // get your values from second viewController and use in first viewController }
之后你必须选择你的第二个ViewController
1:右键单击Controller并在退出时拖动,然后会出现以下方法 2:选择它并为其分配标识符。 3:然后在第二个具有相同标识符的viewController中对该操作执行segue。
答案 1 :(得分:0)
如果您有NavigationController,请尝试:(Objective-C)
FirstVC* firstVC = self.navigationController.viewControllers[self.navigationController.viewControllers.count
- 2]
最后但导航堆栈中的一系列viewControllers中的一个
如果你在没有NavigationController的情况下打开第二个viewController,你可以得到第一个viewController的实例:
FirstVC* firstVC = self.presentingViewController
请注意,转换完成后,此属性中的演示VC实例将在viewDidAppear
中完成,例如