更改Swift UILabel的文本

时间:2014-07-30 17:33:34

标签: ios swift uilabel iboutlet

我正在尝试学习Apple的Swift。我最近尝试构建一个GUI应用程序,但我有一个问题:

如何与应用的GUI元素进行交互?例如,我使用界面构建器来创建UILabel,然后通过按住Control键点击它将它连接到我的viewcontroller,这样我就得到了@IBOUTLET。现在,在我的视图控制器中,如何编辑此UILabel的文本?换句话说,我可以使用什么代码以编程方式控制故事板上某些内容的文本?我在网上找到的所有方法似乎都只使用在代码中生成的按钮,而不是在故事板上生成的按钮。

我看过像

这样的代码
self.simpleLabel.text = "message"

如果这是正确的,我如何将其与相关标签链接?换句话说,我如何调整此代码以与IBOutlet连接(如果这就是我的工作)

4 个答案:

答案 0 :(得分:27)

如果您已成功将控件与IBOutlet课程中的UIViewController相关联,则会将该属性添加到该属性中,您只需将 simpleLabel 替换为您的任何内容将您的IBOutlet连接命名为:

class MyViewController: UIViewController {
    @IBOutlet weak var myLabel: UILabel!
    func someFunction() {
        self.myLabel.text = "text" 
    }
}

答案 1 :(得分:23)

您创建的插座必须由您命名。插座属于您的视图控制器。 self.simpleLabel表示获取名为' simpleLabel'的 my 属性的值。

由于不同的商店有不同的名称,因此在您的商店被命名为“SimpleLabel”之前,使用self.simpleLabel一定不会有效。尝试更换简单的标签'用你创建它时给插座的名字。

现在正确的方法是:

self.yourLabelName.text = "message"

答案 2 :(得分:4)

如果您对IBOutlet有这样的话:

@IBOutlet var someLabel: UILabel!

然后您可以像在示例中一样设置text属性:

someLabel.text = "Whatever text"

如果您遇到此问题,可能您没有在正确的位置分配text属性。如果它在一个未被调用的函数中,那么该行将不会执行,并且text属性不会改变。尝试覆盖viewDidLoad函数,并将行放在那里,如下所示:

override func viewDidLoad() {
    super.viewDidLoad()
    someLabel.text = "Whatever text"
}

然后,只要视图加载,您就会设置text属性。如果您不确定某行代码是否正在执行,您可以随时在其中放置断点,或添加一些输出。像

这样的东西
println("Checkpoint")

在你不确定的代码块中,可以真正帮助你查看它何时运行。

希望这有帮助。

答案 3 :(得分:3)

您可能尝试更改不在主线程中的UI组件,在这种情况下,请执行以下操作:

DispatchQueue.main.async {
        someLabel.text = "Whatever text"
}