Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 更改Swift UILabel的文本_Ios_Swift_Uilabel_Iboutlet - Fatal编程技术网

Ios 更改Swift UILabel的文本

Ios 更改Swift UILabel的文本,ios,swift,uilabel,iboutlet,Ios,Swift,Uilabel,Iboutlet,我正在尝试学习苹果的Swift。我最近尝试构建一个GUI应用程序,但我有一个问题: 如何与应用程序的GUI元素交互?例如,我使用interface builder制作了一个UILabel,并通过单击控件将其连接到我的viewcontroller,这样我就得到了@IBOUTLET。现在,在视图控制器中,如何编辑此UILabel的文本?换一种说法,我可以使用什么代码以编程方式控制故事板上某些内容的文本?我在网上找到的所有方法似乎都只使用代码中生成的按钮,而不是脚本上生成的按钮 我见过这样的代码 se

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

如何与应用程序的GUI元素交互?例如,我使用interface builder制作了一个UILabel,并通过单击控件将其连接到我的viewcontroller,这样我就得到了@IBOUTLET。现在,在视图控制器中,如何编辑此UILabel的文本?换一种说法,我可以使用什么代码以编程方式控制故事板上某些内容的文本?我在网上找到的所有方法似乎都只使用代码中生成的按钮,而不是脚本上生成的按钮

我见过这样的代码

self.simpleLabel.text = "message"

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

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

由于不同的插座具有不同的名称,因此在您的插座命名为“simpleLabel”之前,在此处使用
self.simpleLabel
将不起作用。尝试将“simpleLabel”替换为创建插座时为其指定的名称

现在正确的方法是:

self.yourLabelName.text = "message"

如果您已成功地将控件与
UIViewController
类上的
IBOutlet
链接,则该属性将添加到控件中,您只需将simpleLabel替换为您命名的
IBOutlet
连接即可:

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

如果IBOutlet有类似的功能:

@IBOutlet var someLabel: UILabel!
然后,您可以像示例中那样设置text属性:

someLabel.text = "Whatever text"
如果您对此有问题,可能您没有在正确的位置指定text属性。如果它位于未被调用的函数中,则该行将不会执行,文本属性也不会更改。尝试重写viewDidLoad函数,并将行放在其中,如下所示:

override func viewDidLoad() {
    super.viewDidLoad()
    someLabel.text = "Whatever text"
}
然后,在加载视图后,您将设置text属性。如果您不确定是否有一行代码正在执行,您可以始终在那里放置一个断点,或者添加一些输出。差不多

println("Checkpoint")
在您不确定的代码块中,可以真正帮助您了解它何时以及是否运行


希望这能有所帮助。

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

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

谢谢!既然你似乎知道自己在做什么,我希望你不介意再问一个问题:你会推荐一些快速教程吗?苹果似乎没有任何介绍GUI编程的文献(他们假设你知道自己在做什么)。如果没有,就不用担心。@rocket101查看Swift上的。有一大堆。或者在iBooks商店里查看免费的“Swift编程语言”书籍。正如@Rob所说,Swift编程语言书籍语言指南非常有用:讨论被感动了。这是一个答案,因此不需要主持人采取行动。使用相应的投票。这是最新的答案,应该被接受。