所以在我的1stViewController中我有这段代码:
@IBAction func colorDropdown(_ sender: Any) {
self.popUpColorPicker()
}
func popUpColorPicker() {
let popOverVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ColorPicker") as! ColorPicker
self.addChildViewController(popOverVC)
popOverVC.view.frame = self.view.frame
self.view.addSubview(popOverVC.view)
popOverVC.didMove(toParentViewController: self)
}
哪个会弹出2ndViewController。在解雇Pop Up 2ndViewController后,我想检索我输入的值并在第一个视图控制器中使用它。
答案 0 :(得分:2)
You can achieve this by either using delegate
or completion handler
.
Just create a delegate to handle your data on dismissing the second VC
.
**
**
Write a completion handler
closure
to get back those values in your first view controller
.
答案 1 :(得分:2)
假设A& B是两个控制器,您首先使用一些数据从A导航到B.现在你想用一些数据从B到A进行POP。
Unwind Segues是最好的推荐方式。 以下是步骤。
定义以下方法
@IBAction func unwindSegueFromBtoA(segue:UIStoryNoardSegue){
}
打开故事板
选择B ViewController并单击ViewController outlet。按下控制键并拖动到“退出”键。插座,让鼠标留在这里。在下图中,所选图标为ViewController插座,最后一个带退出标志的图标为Exit Outlet。
您将看到“unwindSegueFromBtoA'弹出窗口中的方法。选择此方法。
现在,您将在左侧的视图控制器层次结构中看到一个segue。您将在下面的图片中看到您在StoryBoard Entry Piont附近创建的segue。
选择此项并为其设置标识符。 (建议设置与方法相同的名称 - unwindSegueFromBtoA)
开放B.m.现在,无论您想要弹出哪个A.使用
self.performSegueWithIdentifier(" unwindSegueFromBtoA",sender:dataToSend)
现在,当您弹出' A',' unwindSegueFromBtoA'方法将被调用。在' A'的unwindSegueFromBtoA中您可以访问' B'
那就是......!
答案 2 :(得分:0)
你总是可以在放松时使用放松来做一些事情
在您的第一个vc中声明IBAction
var color: UIColor!
@IBAction func unwindToCheckout(segue: UIStoryboardSegue) {
//do some stuff with color
}
然后为popout viewcontroller创建exit segue 那么你可以像这样解除弹出
self.performSegueWithIdentifier("unwindToVC1", sender: selectedColor)
然后在prepareForSegue
if segue.identifier == "unwindToVC1" {
(segue.destinationViewController as! FirstViewController).color = sender as! UIColor
}
你也可以创建委托以达到fistviewcontroller并做一些更容易做的事情