根据另一个开关状态关闭或打开开关

Turn a switch Off or On on the basis of another switch state

如何关闭不同开关内的开关? 下面是一个例子——当打开 isMale 开关时,关闭 isFemale 开关。

- (IBAction)isMale:(id)sender {
       if ([sender isOn]) {

             //TURN isFemale SWITCH OFF

       }
       else {
            ...
       }
 }

- (IBAction)isFemale:(id)sender {
       if ([sender isOn]) {

            //TURN isMale SWITCH OFF

       }
       else {
            ...
       }
 }

我一直在阅读 Apple 开发文档,但找不到任何有关在另一个开关内更改开关的信息。 干杯。

这是您需要的简单示例

- (void)viewDidLoad 
 {
    [super viewDidLoad];
   // Do any additional setup after loading the view, typically from a nib.

    [_btnMale setOn:YES animated:YES];
    [_btnFemale setOn:NO animated:YES];

 }


 - (IBAction)btnMaleClick:(id)sender
 {
     if ([sender isOn])
     {
        [_btnFemale setOn:NO animated:YES];
     }

 }

 - (IBAction)btnFemaleClick:(id)sender
 {
    if ([sender isOn])
    {
       [_btnMale setOn:NO animated:YES];
    }

  }

首先,您需要在 header .h 文件

中创建两个 UISwitchIBOutlet
@property (strong, nonatomic) IBOutlet UISwitch *isMale;
@property (strong, nonatomic) IBOutlet UISwitch *isFemale;

然后在您的 IBAction 中执行以下操作。

- (IBAction)isMale:(id)sender {
   if ([sender isOn]) {

         [_isFemale setOn:NO animated:YES];

   }
   else {
        // do what you want.
   }
}
- (IBAction)isFemale:(id)sender {
   if ([sender isOn]) {

        [_isMale setOn:NO animated:YES];

   }
   else {
        //do what you want
   }
}

记得将您的 IBOutlet 连接到 UIViewController 中的相应 objects。

这里是如何在swift中切换按钮状态以供将来参考

override func viewDidLoad() {
    super.viewDidLoad()

    btnMale.setOn(true, animated: true)
    btnFemale.setOn(false, animated: true)

}

@IBAction func btnMaleClick(sender: UISwitch){
    if sender.on{
        btnFemale.setOn(false, animated: true)
    }
}
@IBAction func btnFemaleClick(sender: UISwitch){
    if sender.on{
        btnMale.setOn(false, animated: true)
    }
}

在swift 5.1 (Xcode 11)中使用

       [switchPass .setOn(false, animated: true)]