Simer Sarao
Simer Sarao

Reputation: 540

IBOutlet in objective-c

what does this line of code do :

IBOutlet UITextField *userName;

Upvotes: 1

Views: 924

Answers (3)

Jano
Jano

Reputation: 63667

IBOutlet exposes variables in Interface Builder.

Example: go to Interface Builder, right click the class containing that line, and you will see a element userName. Unlike the other members of that class, it appears because it has been declared using IBOutlet. If you drag a line from that element to a UITextField control, any operation on the variable (eg: accessing its contents with userName.text) will be performed on the GUI element.

Upvotes: 1

Tommy
Tommy

Reputation: 100602

Maybe a little more detailed than changelog, but primarily posting just because I'd already typed it, it may help and it wouldn't format correctly as a comment, not because I disagree with his answer:

IBOutlet is a no-op in code terms. So that declares an instance variable of type UITextField * and with name userName, exactly as if you'd typed just:

UITextField *userName;

What IBOutlet does is flag that member variable up as intended to be used as an outlet in Interface Builder (hence the IB). So when Interface Builder (or Xcode 4, since the two are now integrated) parses your class definition it knows to expose userName as something you can connect to a control.

Upvotes: 6

changelog
changelog

Reputation: 4681

That is part of the connection of the userName property to your XIB file.

It allows you to access the control programatically and, in this case, change / retrieve its text for instance.

Upvotes: 0

Related Questions