更改Swift UILabel的文本

我正试图学习苹果的Swift。 我最近试图build立一个GUI应用程序,但我有一个问题:

我如何与我的应用程序的GUI元素进行交互? 例如,我使用界面生成器来创build一个UILabel,并通过点击控件将其连接到我的viewcontroller,以便获得@IBOUTLET的东西。 现在,我如何在我的视图控制器中编辑这个UILabel的文本? 换一种说法,我可以用什么代码来编程控制我的故事板上的文字? 我在网上find的所有方法只能用代码生成的button,而不是在故事板上生成的button。

我见过类似的代码

self.simpleLabel.text = "message" 

如果这是正确的,我如何将它与有问题的标签链接? 换句话说,我该如何调整这个代码才能与IBOutlet连接(如果这就是我所做的)

如果您已经成功地将控件与UIViewController类上的IBOutlet链接起来,那么该属性将被添加到它,并且您将简单地用您命名为IBOutlet连接的任何名称replacesimpleLabel ,如下所示:

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

你创造的出路一定是由你命名的。 该sockets属于您的视图控制器。 self.simpleLabel意思是“获取我的属性名为” self.simpleLabel “的值。

由于不同的商店有不同的名称,在这里使用self.simpleLabel将不会工作,直到您的sockets命名为“simpleLabel”。 尝试用创build时给出口的名称replace“simpleLabel”。

现在正确的方法是:

 self.yourLabelName.text = "message" 

如果你有这样一个IBOutlet的东西:

 @IBOutlet var someLabel: UILabel! 

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

 someLabel.text = "Whatever text" 

如果你有这个问题,也许你没有在正确的地方分配文本属性。 如果它在一个没有被调用的函数中,该行将不会被执行,并且文本属性不会改变。 尝试覆盖viewDidLoad函数,并把行放在那里,像这样:

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

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

 println("Checkpoint") 

在你不确定的代码块内可以真正帮助你看到什么时候运行。

希望这可以帮助。

你可能试图改变一个不在主线程中的UI组件,在这种情况下,可以这样做:

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