ios - 通过闭包传递 UIPickerView 行索引

标签 ios swift closures

我的目标是将 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/

相关文章:

ios - 如何将 RGBA 转换为 UIColor 并返回

swift - 如果(变量 == 变量 + 5)

methods - 如何从方法的闭包中删除强引用循环?

javascript - 对 JavaScript 闭包的工作原理感到困惑

javascript - 关闭返回?

ios - 使用 Swift 中的 UIScrollView 从用户的触摸点放大图像

objective-c - 执行 Facebook 查询时没有返回结果

ios - 核心蓝牙 CBCentralManager 在 Mac 上始终将状态报告为未知

swift - 用 * 屏蔽名字和姓氏字符串

Xcode、Parse - 处理远程通知