使用委托将数据从模态视图传递到父视图(在故事板中使用 segue)
Pass data from Modal view to Parent view using delegates (with a segue in storyboard)
我正在尝试将一些数据从一个视图传递到下一个视图,但是我正在使用 segue(使用情节提要来执行此操作)以便在模态演示文稿中打开第二个视图。
现在我正在使用委托将一些信息从打开模式window传递回主视图...
它不起作用,它永远达不到主要 window。不会崩溃。
我试过用这个:
(这实际上是我想要完成的)但我无法让它发挥作用。我也错过了它说的部分
myPopUp.delegate = self
因为我正在通过故事板使用 segue 而我没有办法做到这一点...
请帮忙!
这是主控制器:
import UIKit
class HomeViewController: UIViewController, AddRowDelegate {
public func didAddRow(name: String){
print("reached HomeViewController") // This does NOT print
}
override func viewDidLoad(){
super.viewDidLoad()
}
}
这是模态 Window:
import UIKit
protocol AddRowDelegate {
func didAddRow(name : String)
}
class ModalViewController: UIViewController {
var delegate : AddRowDelegate?
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func SendInfoBack(_ sender: Any) {
delegate?.didAddRow(name: "whatever")
print("Modal Window") // This part DOES print.
}
}
在 prepareForSegue 中设置委托
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showModal"{
let modalVC = segue.destination as! ModalViewController
modalVC.delegate = self
}
}
如果我对你的问题理解正确,你应该在目标视图中使用相同的数据类型并通过准备函数传递它
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "toTabBar"{
let destView = segue.destination as! UIView
destView.data= dataToPass
}
}
.
我正在尝试将一些数据从一个视图传递到下一个视图,但是我正在使用 segue(使用情节提要来执行此操作)以便在模态演示文稿中打开第二个视图。
现在我正在使用委托将一些信息从打开模式window传递回主视图...
它不起作用,它永远达不到主要 window。不会崩溃。
我试过用这个:
myPopUp.delegate = self
因为我正在通过故事板使用 segue 而我没有办法做到这一点...
请帮忙!
这是主控制器:
import UIKit
class HomeViewController: UIViewController, AddRowDelegate {
public func didAddRow(name: String){
print("reached HomeViewController") // This does NOT print
}
override func viewDidLoad(){
super.viewDidLoad()
}
}
这是模态 Window:
import UIKit
protocol AddRowDelegate {
func didAddRow(name : String)
}
class ModalViewController: UIViewController {
var delegate : AddRowDelegate?
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func SendInfoBack(_ sender: Any) {
delegate?.didAddRow(name: "whatever")
print("Modal Window") // This part DOES print.
}
}
在 prepareForSegue 中设置委托
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showModal"{
let modalVC = segue.destination as! ModalViewController
modalVC.delegate = self
}
}
如果我对你的问题理解正确,你应该在目标视图中使用相同的数据类型并通过准备函数传递它
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "toTabBar"{
let destView = segue.destination as! UIView
destView.data= dataToPass
}
}
.