簡體   English   中英

更改Swift UILabel的文本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM