为什么我的UILabel变量总是为零?

时间:2016-02-15 18:57:20

标签: ios swift uilabel

我只是想在Swift中将变量与UILabel连接起来。我看了很多教程但是我一直都有错误。主要原因似乎是@IBOutlet weak var str = UILabel!始终为零。当我尝试为其分配值时,控制台会打印fatal error: unexpectedly found nil while unwrapping an Optional value并在编码界面内,突出显示行self.stringLabel.text = self.string,错误为Thread 1: EXC_BAD_INSTRUCTION(code=EXC_I386_INVOP,subcode=0x0。这是我的代码:

@IBOutlet weak var stringLabel: UILabel!
var string: String!

override func viewDidLoad() {
    self.stringLabel.text = self.string
    super.viewDidLoad()
}

@IBAction func buttonClick(sender: UIButton) {
    self.stringLabel.text = "Button clicked!"
}

我尝试了围绕变量的.self.text的不同定位,但没有成功。我是在正确的轨道上吗?而且,如果是这样,我做错了什么?如果我完全错了,如何将标签的文本设置为变量的文本?非常感谢你提前。

编辑:我已将故事板中的标签与@IBOutlet

相关联

e

3 个答案:

答案 0 :(得分:1)

如果你在界面构建器中连接了它,可以处理你的UILabel(确保是这样的)但是你的字符串对象是未初始化的,你必须用 000000, 11111111, 222222222, 33333333 分配它或者如果你想要使用可选的var string: String = ""

您可以在全局范围内执行此操作,但我建议所有视图控制器都使用var string: String? = ""方法分配这些类型的事物。

编辑:我尝试重现问题,但我得到了预期的结果。这是我的视图控制器代码

init()

enter image description here

答案 1 :(得分:0)

问题是变量stringnil

隐式展开的可选(!)在使用时必须是非零的。

尝试一些真实的东西:

var string = "Hello there"

答案 2 :(得分:0)

stringLabel属性未连接到Interface Builder

您必须将Interface Builder中的UILabel对象连接到Swift代码中的属性。

  1. 在Xcode中并排打开代表您的UI和Swift View Controller
  2. 的xib / storyboard
  3. 按住键盘上的 ctrl
  4. 将指针移到Interface Builder
  5. 中的UILabel对象上
  6. 按指针按钮
  7. 将指针从UILabel(界面构建器)拖到Swift源代码中声明UILabel!中的@IBOutlet weak var stringLabel: UILabel!部分
  8. enter image description here

    就是这样。