Label.text未更新

时间:2017-07-03 09:03:53

标签: ios swift xcode swift3 segue

问题是每次在viewload中一直接受label.text值变为nil。我不知道是什么问题。

我在swift 3 Xcode 8中有这个代码,我有一个标签,如下所示

稍后要设置的标签

enter image description here

然后我想在视图加载为初始值

时为标签赋值

这是一次查看加载并且工作正常:)

enter image description here

稍后我希望将标签值更改为当用户移动到另一个视图时我想要设置的当前日期,所以我按照你说的那样打开了函数..

以下是我如何调用函数

来自secondViewController的函数调用

enter image description here

最后我想将它设置为那些值

enter image description here

last desired values

2 个答案:

答案 0 :(得分:2)

在firstviewcontroller中执行此操作,定义属性说:

var x : String?

现在在你的第二个视图控制器中执行此操作:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

            let firstviewcontroller = segue.destination as! FirstViewController

            firstviewcontroller.x = "sample value"
          // sample value will be displayed on the firstview controller when u move from secondviewcontroller to firstviewcontroller on the label
}

现在在firstviewcontroller中使用viewDidLoad()方法设置标签:

dateItem?.text = x

注意:无需在prepare函数中创建另一个FirstViewController实例,因为UIViewController override func prepare(for segue: UIStoryboardSegue, sender: Any?)的内置函数负责从一个视图控制器转到另一个视图控制器只需要比较标识符

答案 1 :(得分:1)

问题在于为segue做准备。当您使用segue.destination到firstViewController获得引用时,您不需要这样做 s = FirstViewController(),您正在创建一个新实例而不使用将在segue中实际初始化的实例,请使用firstController.calcPray()