【问题标题】:Passing Stepper value to another view controller将 Stepper 值传递给另一个视图控制器
【发布时间】:2020-03-13 23:42:22
【问题描述】:

漂亮的自我解释代码,我的问题是第一次打印显示正确的值,但第二次打印总是显示 0。我正在尝试将步进器的值传递给我的下一个视图控制器 (calcVC)。

编辑:忘记提及我的问题发生在我单击一个触发 CalcVC 的展开 segue 的按钮时,这是我失去值的时候。此外,此代码在 TableViewCellVC 中,而我的 unwind segue 是从 TableViewVC 到 CalcVC,这就是我在 CalcVC 上遇到问题的原因。

最终编辑:通过创建全局变量来修复它

    var stepperValue = 1


@IBAction func stepperValueChanged(_ sender: Any) {

    stepperValue = Int(stepper.value)

    print(stepperValue)

    stepperLabel.text = String(stepperValue)

    let CalcVC = CalculatorVC()

    stepperValue = CalcVC.calcVCStepperValue

    print(stepperValue)
}

【问题讨论】:

  • calcVCStepperValue的值是多少?
  • 简单的 var CalcVCStepperValue = Int()
  • 所以基本上你将 stepperValue 设置为 0,因为你间接将 stepperValue 的值设置为 Int(),即 0。

标签: swift view controller stepper


【解决方案1】:

您需要将stepperValue 的值分配给CalcVC.calcVCStepperValue。目前你只是创建CalcVC,然后打印出calcVCStepperValue的默认值。

let CalcVC = CalculatorVC()
CalcVC.calcVCStepperValue = stepperValue
stepperValue = CalcVC.calcVCStepperValue
print(stepperValue)

如果您使用 segues 执行此操作,则无法创建视图控制器的新实例。相反,您需要在要展开的视图控制器上实现 prepareForSegue 函数,并使用 segue 参数访问 destinationViewController

Passing data with unwind segue 有一个现成的答案

【讨论】:

  • 根据断点,这是可行的,但是我忽略了当我单击一个触发并解除对 CalcVC 的 segue 的按钮时会发生我的问题,这是我失去值的时候。我更新了我的原始帖子以反映这一点
  • 更新了我的答案:)
  • 通过创建全局变量修复。谢谢
猜你喜欢
  • 1970-01-01
  • 2021-12-20
  • 2012-05-02
  • 1970-01-01
  • 1970-01-01
  • 2015-10-13
  • 1970-01-01
  • 2013-04-15
  • 2012-11-13
相关资源
最近更新 更多