改变Swift中UILabel的文本

29

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

我如何与我的应用程序的GUI元素进行交互?例如,我使用界面构建器制作了一个UILabel,并通过控制单击将其连接到我的视图控制器,以获取@IBOUTLET。现在,在我的视图控制器中,我该如何编辑此UILabel的文本?换句话说,我可以使用什么代码来编程控制故事板上的某个内容的文本?我在网上找到的所有方法似乎都只适用于在代码中生成的按钮,而不是在故事板上生成的按钮。

我见过这样的代码:

self.simpleLabel.text = "message"
如果这是正确的,那么我该如何将它与相关的标签链接起来?换句话说,我该如何修改此代码以便与 IBOutlet 相连接(如果这是我需要做的)?

如果这是正确的,那么我该如何将其与相关的标签链接起来?换句话说,我该如何调整这段代码,使其与 IBOutlet 相连接(如果这是我需要做的)

4个回答

37
如果您已成功将控件与UIViewController类上的IBOutlet链接起来,那么该属性将被添加到它上面,您只需要用您所命名的IBOutlet连接替换simpleLabel即可,如下所示:
class MyViewController: UIViewController {
    @IBOutlet weak var myLabel: UILabel!
    func someFunction() {
        self.myLabel.text = "text" 
    }
}

1
非常感谢!由于您似乎知道自己在做什么,我希望您不介意再问一个问题:您有推荐的Swift教程吗?苹果似乎没有任何关于GUI编程的入门级文献(他们认为您已经知道自己在做什么)。如果没有,也没关系。 - rocket101
2
@rocket101 请查看关于Swift的WWDC 2014视频,有很多视频可以观看。或者去iBooks商店获取免费的《Swift编程语言》书籍。 - Rob
正如@Rob所说,Swift编程语言书籍的语言指南非常有用:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html#//apple_ref/doc/uid/TP40014097-CH5-XID_443 - Alex Zielenski
1
@rocket101 我发现Udemy上的“iOS&Swift-完整的iOS应用程序开发Bootcamp”课程非常有用。 - Ramy Sameh

25

您创建的outlet必须由您命名。该outlet属于您的视图控制器。self.simpleLabel表示“获取名为'simpleLabel'的我的属性的值”。

由于不同的outlet具有不同的名称,因此在您的outlet命名为“simpleLabel”之前,使用self.simpleLabel将不起作用。请尝试使用您创建时给出的outlet名称替换“simpleLabel”。

现在的正确方式是:

self.yourLabelName.text = "message"

2
讨论已移至 此处。这是一个回答,因此无需 moderator 参与。请根据您的认可进行投票。 - Robert Harvey

6
如果您有一个IBOutlet,类似于以下内容:
@IBOutlet var someLabel: UILabel!

那么你可以像你的示例一样设置文本属性:

someLabel.text = "Whatever text"

如果你遇到了问题,可能是因为你没有在正确的位置分配文本属性。如果它在一个不被调用的函数中,那么该行不会执行,文本属性也不会改变。尝试重写viewDidLoad函数,并将该行代码放入其中,就像这样:

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

当视图加载时,您将立即设置文本属性。如果您不确定代码是否正在执行,您可以在那里加入一个断点或添加一些输出。类似于:

println("Checkpoint")

在你不确定的代码块中插入调试语句,可以帮助你查看它何时执行以及是否执行。

希望这能帮到你。


6

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接