我的目标是将 rowClosure 传递给另一个 View Controller ,但我只是停留在这里。我应该做什么来解决它?
View Controller 1
var rowClosure : (Int) -> (Int) = { x in return x}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
self.rowClosure(row)
}
ViewController2
let vc1 = ViewController1()
var row: Int!
row = vc1.rowClosure
但是,它不起作用
最佳答案
如果你想使用闭包,你的代码应该如下所示:
VC1
var rowClosure : ((Int) -> Void)?
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
self.rowClosure?(row)
}
然后在 VC2 中,您获得对 VC1 的引用,并设置一个闭包,其中包含当您从 VC1 调用闭包时需要在 VC2 中执行的代码:
vc1.rowClosure = { (vc1Row) in
//do something with row, for example
vc2.row = vc1Row
}
关于ios - 通过闭包传递 UIPickerView 行索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47506351/