[英]Changing text of Swift UILabel
我正在嘗試學習Apple的Swift。 我最近嘗試構建一個GUI應用程序,但我有一個問題:
如何與應用的GUI元素進行交互? 例如,我使用界面構建器來創建UILabel,然后通過按住Control鍵點擊它將它連接到我的viewcontroller,這樣我就得到了@IBOUTLET。 現在,在我的視圖控制器中,如何編輯此UILabel的文本? 換句話說,我可以使用什么代碼以編程方式控制故事板上某些內容的文本? 我在網上找到的所有方法似乎只能使用代碼生成的按鈕,而不是故事板上生成的按鈕。
我見過像這樣的代碼
self.simpleLabel.text = "message"
如果這是正確的,我如何將其與相關標簽鏈接? 換句話說,我如何調整此代碼以與IBOutlet連接(如果這就是我的工作)
如果您已成功將控件與UIViewController
類上的IBOutlet
相關聯,那么該屬性將添加到它中,您只需將simpleLabel替換為您命名為IBOutlet
連接的任何內容,如下所示:
class MyViewController: UIViewController {
@IBOutlet weak var myLabel: UILabel!
func someFunction() {
self.myLabel.text = "text"
}
}
您創建的插座必須由您命名。 插座屬於您的視圖控制器。 self.simpleLabel
意思是“取我的指定屬性的值‘simpleLabel’。
由於不同的出口具有不同的名稱, self.simpleLabel
在您的出口被命名為“simpleLabel”之前,使用self.simpleLabel
將無效。 嘗試使用您在創建插座時為插座指定的名稱替換“simpleLabel”。
現在正確的方法是:
self.yourLabelName.text = "message"
如果您對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")
在你不確定的代碼塊中,可以真正幫助你查看它何時運行。
希望這可以幫助。
您可能嘗試更改不在主線程中的UI組件,在這種情況下,請執行以下操作:
DispatchQueue.main.async {
someLabel.text = "Whatever text"
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.