Create an account

Very important

  • To access the important data of the forums, you must be active in each forum and especially in the leaks and database leaks section, send data and after sending the data and activity, data and important content will be opened and visible for you.
  • You will only see chat messages from people who are at or below your level.
  • More than 500,000 database leaks and millions of account leaks are waiting for you, so access and view with more activity.
  • Many important data are inactive and inaccessible for you, so open them with activity. (This will be done automatically)


Thread Rating:
  • 452 Vote(s) - 3.58 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Changing text of Swift UILabel

#1
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, I used interface builder to make a UILabel, and I connected it to my viewcontroller by control-clicking, so that I get the @IBOUTLET thing. Now, how do I, while in my view controller, edit the text of this UILabel? To state it another way, what code can I use to programatically control the text of something on my storyboard? All methods I have found online only appear to work with a button generated in code, not a button generated on a storyboard.

I've seen code like

self.simpleLabel.text = "message"

If this is right, how do I link it with the label in question? In other words, how do I adapt this code to be connected with the IBOutlet (If that's what I do)
Reply

#2
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"
}
}
Reply

#3
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"
}
Reply

#4
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"
Reply

#5
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.
Reply



Forum Jump:


Users browsing this thread:
1 Guest(s)

©0Day  2016 - 2023 | All Rights Reserved.  Made with    for the community. Connected through