我想制作一个搜索过滤器(在单独的屏幕上),我想如何为我的第二个viewcontroller传输数据。 有没有办法使用类似C ++的指针?当我的数组中的所有更改(在第二个视图中)在第一个视图中发生更改时,实际上我不需要复制数据,因为我使用了指针。如果我不能使用它,我怎样才能在第一次查看后更改我的数组?
答案 0 :(得分:2)
这里有三种方式: -
如果必须将数据传递给上一个控制器,请使用自定义委派。
如果必须将数据传递给下一个控制器,则只需将数据分配给下一个视图控制器变量。
您可以通过将数据保存在Userdafults中来获取数据。
答案 1 :(得分:1)
不要使用指针,通过NotificationCenter传输数组。
答案 2 :(得分:1)
使用Delegation
将数据传回上一课
来自头等舱,
class FirstClass: UIViewController, SecondClassDelegate {
@IBAction func goToSecondClass(_ sender: Any) {
performSegue(withIdentifier: "SecondClassId", sender: nil)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let destination = segue.destination as? SecondClass {
destination.delegate = self
}
}
func finishPassing(stringPassed: String) {
print(stringPassed)
}
}
在第二课中,
protocol SecondClassDelegate {
func finishPassing(string: String)
}
class SecondClass: UIViewController {
@IBAction func btnPassDataPressed(_ sender: Any) {
var delegate: SecondClassDelegate?
delegate?.finishPassing(string: "Data passed from Second Class")
}
}