Pooja
Pooja

Reputation: 2200

How do I disable a UISwitch?

Is this possible to disable a UISwitch? I do not mean putting it in an OFF state, I mean disabling user interaction, and having it appear gray.

In my app I have two conditions

if (condition == true) {  
  // UISwitch should be enabled  
} else {  
  // UISwitch should be visible, but disabled  
  // e.g uiswitch.enable=NO;  
} 

Any suggestions?

Upvotes: 21

Views: 24783

Answers (4)

Mark Granoff
Mark Granoff

Reputation: 16938

This should do it:

switch.enabled = NO;

or equivalently:

[switch setEnabled:NO];

where switch is whatever your UISwitch variable name is.

Edit 18-Apr-2018

The answer above is (clearly) an Objective-C solution, written well before anyone had ever heard of Swift. The Swift equivalent solution is, of course:

switch.isEnabled = false

Upvotes: 49

KMC
KMC

Reputation: 1742

For those looking for Swift 3,

switch.isEnabled = false // Disabled switch

I know you didn't ask for "off" state, but just in case anybody, like myself, stumbled upon here :

switch.isOn = false

Upvotes: 5

Joetjah
Joetjah

Reputation: 6132

[switchName enabled] = NO;

Use that to disable your switch.

EDIT thanks to rckoenes: "You should not try to set a property via getter. You should use either the setter of . syntax property."

Upvotes: -6

odrm
odrm

Reputation: 5259

Yes you can. UISwitch inherits from UIControl, and UIControl has an enabled property. Apple's UIControl Documentation has all of the details.

To enable

switch.enabled = YES;

To disable

switch.enabled = NO;

Upvotes: 7

Related Questions