How do I disable a UISwitch?

22,457

Solution 1

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

Solution 2

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;

Solution 3

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
Share:
22,457

Related videos on Youtube

Pooja
Author by

Pooja

Updated on April 19, 2020

Comments

  • Pooja
    Pooja about 4 years

    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?

  • rckoenes
    rckoenes about 13 years
    You should not try to set a property via getter. You should use either the setter of . syntax property.