Changing text of Swift UILabel

后端 未结 4 1527
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-12-30 21:51

I am attempting to learn Apple\'s Swift. I was recently trying to build a GUI app, but I have a question:

How do I interact with GUI elements of my app? For instance

相关标签:
4条回答
  • 2020-12-30 22:07

    If you've successfully linked the control with an IBOutlet on your UIViewController class, then the property is added to it and you would simply replace simpleLabel with whatever you named your IBOutlet connection to be like so:

    class MyViewController: UIViewController {
        @IBOutlet weak var myLabel: UILabel!
        func someFunction() {
            self.myLabel.text = "text" 
        }
    }
    
    0 讨论(0)
  • 2020-12-30 22:07

    The outlet you created must've been named by you. The outlet belongs to your view controller. self.simpleLabel means 'fetch the value of my property named 'simpleLabel'.

    Since different outlets have different names, using self.simpleLabel here won't work until your outlet is named 'simpleLabel'. Try replacing 'simpleLabel' with the name you gave to the outlet when you created it.

    The correct way now would be:

    self.yourLabelName.text = "message"
    
    0 讨论(0)
  • 2020-12-30 22:12

    If you have something like this for an IBOutlet:

    @IBOutlet var someLabel: UILabel!
    

    then you could set the text property just like in your example:

    someLabel.text = "Whatever text"
    

    If you're having problems with this, perhaps you're not assigning the text property in the right place. If it's in a function that doesn't get called, that line won't execute, and the text property won't change. Try overriding the viewDidLoad function, and put the line in there, like this:

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

    Then, as soon as the view loads, you'll set the text property. If you're not sure if a line of code is executing or not, you can always put a breakpoint there, or add some output. Something like

    println("Checkpoint")
    

    inside a block of code you're unsure about could really help you see when and if it runs.

    Hope this helps.

    0 讨论(0)
  • 2020-12-30 22:20

    You may trying to change a UI component not in the main thread, in that case, do this:

    DispatchQueue.main.async {
            someLabel.text = "Whatever text"
    }
    
    0 讨论(0)
提交回复
热议问题