См. Этот псевдокод,
Создать GenderCellDelegate
protocol GenderCellDelegate : class {
func genderSelected(_ gender : Gender)
}
Enum Для пола
enum Gender : Int {
case male = 1, female, other
}
GenderTableViewCell
class GenderTableViewCell: UITableViewCell {
@IBOutlet weak var btnMale : UIButton!
@IBOutlet weak var btnFemale : UIButton!
@IBOutlet weak var btnOther : UIButton!
weak var delegate : GenderCellDelegate?
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
// Your can do below from XIB also
// Set buttons images for selcted and normal state
btnMale.setImage(UIImage(named: "radio-on"), for: .selected)
btnFemale.setImage(UIImage(named: "radio-on"), for: .selected)
btnOther.setImage(UIImage(named: "radio-on"), for: .selected)
btnMale.setImage(UIImage(named: "radio-off"), for: .normal)
btnFemale.setImage(UIImage(named: "radio-off"), for: .normal)
btnOther.setImage(UIImage(named: "radio-off"), for: .normal)
// Optional - if required
btnMale.isSelected = true // For default selection
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
@IBAction func btnMaleSelected(_ sender : UIButton) {
self.btnMale.isSelected = true
self.btnFemale.isSelected = false
self.btnOther.isSelected = false
delegate?.genderSelected(.male)
}
@IBAction func btnFemaleSelected(_ sender : UIButton) {
self.btnMale.isSelected = false
self.btnFemale.isSelected = true
self.btnOther.isSelected = false
delegate?.genderSelected(.female)
}
@IBAction func btnOtherSelected(_ sender : UIButton) {
self.btnMale.isSelected = false
self.btnFemale.isSelected = false
self.btnOther.isSelected = true
delegate?.genderSelected(.other)
}
}
Ваш контроллер
class MyController : UIViewController , UITableViewDelegate, UITableViewDataSource, GenderCellDelegate {
:
:
func genderSelected(_ gender: Gender) {
switch gender {
case .male:
print("Male selected")
break
case .female:
print("Female selected")
break
case .other:
print("Other selected")
break
}
// reload tableview row for gender cell
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let genderCell = tableView.dequeueReusableCell(withIdentifier: "GenderTableViewCell") as! GenderTableViewCell
genderCell.delegate = self
return genderCell
}
}