2016-12-03 38 views
2

我有2个单选按钮男性,女性。我做了所有事情......当我尝试选择男性,女性radiobuton。它根本没有选择。这里我的代码:单选按钮不改变,通过选择

@IBOutlet var btn_male: UIButton! // create outlet for radio button 
@IBOutlet var btn_female: UIButton! 

@IBAction func btn_male_female_click(sender: UIButton) { 
     switch sender.tag { 
     case 10: 
      //male select 
      if (sender.selected == true) { 
       sender.selected = false; 
       btn_male.selected = true; 
       btn_female.selected = false; 
       gender = "1" 
       print("male selected") 

      }else{ 
       sender.selected = true; 
       btn_male.selected = false; 
       btn_female.selected = true; 
       gender = "2" 
       print("female selected") 
      } 
      break; 
     case 20: 
      //female select 
      if (sender.selected == true) { 
       sender.selected = false; 
       btn_female.selected = true; 

       btn_male.selected = false; 
       gender = "2" 
       print("female selected") 
      }else{ 
       sender.selected = true; 
       btn_female.selected = false; 
       btn_male.selected = true; 
       gender = "1" 
       print("male selected") 
      } 

      break; 
     default: 
      break; 
     } 
    } 

我不知道为什么不选择。要更改图像,我将状态配置更改为选中状态,并保存选定的广播图像。

但我的问题是,它不是在所有selecting.Please帮我out.Thanks

UPDATE:

后,我更新此解决方案。我只是从我的数据库检查,我正在摆脱他们已经保存的特定用户的性别。但我有一个问题。

例如,如果我选择男性,我保存它。当我回到我的个人资料屏幕我的男性按钮显示为选定。这是来自db没有问题。但是,当我想更改单选按钮从男性到女性,当我按下女性单选按钮。我的男性单选按钮仍然是选定的,它不会改变以取消选择。如果我这样做了两次,那么它的变化。

@IBAction func btn_male_female_click(sender: UIButton) { 
     self.selectedButton.selected = false 
     self.selectedButton = sender 
     self.selectedButton.selected = true 
     gender = "male" 
     if sender == btn_female { 
      gender = "female" 
     } 
     else if sender == btn_male { 

      gender = "male" 
     } 
} 
override func viewDidAppear(animated: Bool) { 
     super.viewDidAppear(true) 

if profileData.Gender .isEmpty { 





     }else{ 
      if profileData.Gender == "male" 
      { 
       self.btn_male.selected = true 
       self.btn_female.selected = false 
      } 
      else if profileData.Gender == "female" 
      { 
       self.btn_male.selected = false 
       self.btn_female.selected = true 
      } 

     } 
} 
+0

更改为选择的按钮图像,使用'setImage分配:...'方法,你需要,因此,两个图像。 –

+0

其代码已经正常工作 –

+0

@mack在你的情况下,你使用这个库,所以你必须根据该库编写代码。 –

回答

2

您可以通过简单地创建声明的UIButton多了一个实例,它拥有像这样的这种两个按钮之间的选择按钮解决这个问题。

@IBOutlet var btn_male: UIButton! // create outlet for radio button 
@IBOutlet var btn_female: UIButton! 
var selectedButton = UIButton() 

现在使用像这样的按钮动作。

@IBAction func btn_male_female_click(sender: UIButton) { 
    self.selectedButton.selected = false 
    self.selectedButton = sender 
    self.selectedButton.selected = true 
    gender = "1" 
    if sender == btn_female { 
     gender = "2" 
    } 
} 

编辑:您可以管理选定的属性这样的方式。

if !(profileData.Gender.isEmpty) { 

    if profileData.Gender == "male" 
    { 
     self.selectedButton = self.btn_male 
    } 
    else if profileData.Gender == "female" 
    { 
     self.selectedButton = self.btn_female    
    } 
    self.selectedButton.selected = true 
} 
+0

它在这一行中引发错误'gender =(sender == btn_male)? “1”; :“2”'请求我添加更多的逗号 – mack

1

在你的代码的问题是

case 10: 
     //male select 
     if (sender.selected == true) { 
      sender.selected = false; // btn_male selected "false" 
      btn_male.selected = true; // btn_male selected "true" that's the problem 
      btn_female.selected = false; 
      gender = "1" 
      print("male selected") 

     } 

我希望这个代码将帮助您

@IBAction func btn_male_female_click(sender: UIButton) { 
    switch sender.tag { 
    case 10: 
     //male select 
     if (sender.selected == true) { 
      sender.selected = false; 
      btn_female.selected = false; 
      gender = "1" 
      print("male selected") 

     }else{ 
      sender.selected = true; 
      btn_female.selected = true; 
      gender = "2" 
      print("female selected") 
     } 
     break; 
    case 20: 
     //female select 
     if (sender.selected == true) { 
      sender.selected = false; 
      btn_male.selected = false; 
      gender = "2" 
      print("female selected") 
     }else{ 
      sender.selected = true; 
      btn_male.selected = true; 
      gender = "1" 
      print("male selected") 
     } 

     break; 
    default: 
     break; 
    } 
}