更改Swift UILabel的文本

roc*_*101 23 uilabel iboutlet ios swift

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

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

我见过像这样的代码

self.simpleLabel.text = "message"
Run Code Online (Sandbox Code Playgroud)

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

Ale*_*ski 28

如果您已成功将控件与类IBOutlet上的控件相关联UIViewController,则会将属性添加到该属性中,您只需将simpleLabel替换为您指定IBOutlet连接的任何内容即可:

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

  • @ rocket101在Swift上查看[WWDC 2014视频](https://developer.apple.com/videos/wwdc/2014/)。有很多。或在iBooks商店中免费找到《 The Swift Programming Language》一书。 (2认同)

duc*_*i9y 23

您创建的插座必须由您命名.插座属于您的视图控制器.self.simpleLabel意思是"取的值指定属性'simpleLabel’.

由于不同的插座具有不同的名称,因此self.simpleLabel在您的插座被命名为"simpleLabel"之前使用此处将无法使用.尝试使用您在创建插座时为插座指定的名称替换"simpleLabel".

现在正确的方法是:

self.yourLabelName.text = "message"
Run Code Online (Sandbox Code Playgroud)

  • 讨论动了[这里](http://meta.stackoverflow.com/q/267256).这是*答案,*因此不需要主持人行动.相应地使用您的投票. (2认同)

小智 6

如果您有这样的 IBOutlet:

@IBOutlet var someLabel: UILabel!
Run Code Online (Sandbox Code Playgroud)

那么你可以像在你的例子中一样设置 text 属性:

someLabel.text = "Whatever text"
Run Code Online (Sandbox Code Playgroud)

如果您对此有疑问,可能是您没有在正确的位置分配 text 属性。如果它位于未被调用的函数中,则该行不会执行,并且 text 属性不会更改。尝试覆盖 viewDidLoad 函数,并将该行放在那里,如下所示:

override func viewDidLoad() {
    super.viewDidLoad()
    someLabel.text = "Whatever text"
}
Run Code Online (Sandbox Code Playgroud)

然后,一旦视图加载,您将设置 text 属性。如果您不确定某行代码是否正在执行,您总是可以在那里放置一个断点,或者添加一些输出。就像是

println("Checkpoint")
Run Code Online (Sandbox Code Playgroud)

在您不确定的代码块中可以真正帮助您了解它何时以及是否运行。

希望这可以帮助。


ita*_*arb 6

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

DispatchQueue.main.async {
        someLabel.text = "Whatever text"
}
Run Code Online (Sandbox Code Playgroud)