swift 中单选按钮和复选框的 Tableview 多部分按钮操作
Tableview multiple sections button action for radio btn and checkbox in swift
在我的应用程序中有多个部分,即复选框和单选按钮。
在 tableview 单元格中,我创建了两个 UIButton,如果是复选框或单选按钮,它会根据响应而变化。
这是我的代码。
var radioControllerChoice : SSRadioButtonsController = SSRadioButtonsController()
var radioControllerDip : SSRadioButtonsController = SSRadioButtonsController()
var radioControllerDrink : SSRadioButtonsController = SSRadioButtonsController()
var radioControllerSides : SSRadioButtonsController = SSRadioButtonsController()
var radioControllerOption : SSRadioButtonsController = SSRadioButtonsController()
func numberOfSections(in tableView: UITableView) -> Int {
return table_data.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell:CustomiseTableViewCell = tableView.dequeueReusableCell(withIdentifier: "Customise") as! CustomiseTableViewCell
cell.name.text?=table_data[indexPath.section].menu_name[indexPath.row]
print(table_data[indexPath.section].customize[indexPath.row])
switch indexPath.section {
case 2:
radioControllerChoice.addButton(cell.radioBtn)
case 3:
radioControllerDip.addButton(cell.radioBtn)
case 4:
radioControllerDrink.addButton(cell.radioBtn)
case 5:
radioControllerSides.addButton(cell.radioBtn)
case 6:
radioControllerOption.addButton(cell.radioBtn)
default:
print("no case found")
}
switch Int(table_data[indexPath.section].customize[indexPath.row]) {
case 1:
cell.radioBtn.isHidden = true
cell.checkBoxBtn.isHidden = false
break
case 2:
cell.radioBtn.isHidden = false
cell.checkBoxBtn.isHidden = true
break
default:
print("Invalid choose")
}
cell.radioBtn.addTarget(self, action: #selector(ViewController.didSelectButton), for: .touchUpInside)
cell.radioBtn.tag = indexPath.row
cell.checkBoxBtn.addTarget(self, action: #selector(ViewController.checkBoxBtnaction), for: .touchUpInside)
return cell
}
table_data 是数组,我使用 struct 从 Web 服务获取数组值。
我的问题是:
为单选按钮编写按钮操作。
func didSelectButton(selectedButton: UIButton?)
{
print("selectedButton",(selectedButton?.tag)!)
let tagVal = (selectedButton?.tag)!
print("tagVal",tagVal)
}
在按钮点击动作选择中,表格视图中的一个单独部分显示在图像中。 在那个部分想要 select 和 deselect 单选按钮。当 select 起司时它会 selected,然后我将 select 三层起司意味着,起司自动 deselect。只想 select 该部分中的一项。
每个部分都有一个带有单选按钮的不同项目。
如果 selected 一个单选按钮它将 select,在 selected 任何其他单选按钮之后意味着上一个 selected 按钮想要自动取消 select。它应该只在单选按钮的表视图的每个部分中发生。
无论项目 select 想要将其存储在字符串中。
具有多个 selection 的复选框需要相同的按钮操作。
func checkBoxBtnaction(sender:UIButton)
{
}
在此处输入图片描述
帮帮我。提前致谢。
我建议采用以下方法:
1) 为按钮创建模型
2) 取一个定义单选案例的枚举,勾选框
3) 在您的单元格中创建一个普通按钮 UI
4) 根据枚举状态将按钮修改为单选按钮或复选框,从您的 UI 我想更改按钮顶部的图像应该可以解决问题
这样两个按钮将具有相同的操作处理程序,然后您可以根据模型枚举值决定要执行的操作
为单选按钮使用 this 库并以此更新您的代码并尝试
var radioButtonController = SSRadioButtonsController()
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell:CustomiseTableViewCell = tableView.dequeueReusableCell(withIdentifier: "Customise") as! CustomiseTableViewCell
cell.name.text?=table_data[indexPath.section].menu_name[indexPath.row]
print(table_data[indexPath.section].customize[indexPath.row])
radioButtonController.addButton(cell.radioBtn)
switch Int(table_data[indexPath.section].customize[indexPath.row]) {
case 1:
cell.radioBtn.isHidden = true
cell.checkBoxBtn.isHidden = false
break
case 2:
cell.radioBtn.isHidden = false
cell.checkBoxBtn.isHidden = true
break
default:
print("Invalid choose")
}
cell.radioBtn.addTarget(self, action: #selector(ViewController.radioBtnaction), for: .touchUpInside)
cell.checkBoxBtn.addTarget(self, action: #selector(ViewController.checkBoxBtnaction), for: .touchUpInside)
return cell
}
编辑:
var radioControllerChoice : SSRadioButtonsController = SSRadioButtonsController()
var radioControllerDip : SSRadioButtonsController = SSRadioButtonsController()
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell:CustomiseTableViewCell = tableView.dequeueReusableCell(withIdentifier: "Customise") as! CustomiseTableViewCell
cell.name.text?=table_data[indexPath.section].menu_name[indexPath.row]
print(table_data[indexPath.section].customize[indexPath.row])
switch indexPath.section {
case 1:
radioControllerChoice.addButton(cell.radioBtn)
case 2:
radioControllerDip.addButton(cell.radioBtn)
default:
print("no case found")
}
switch Int(table_data[indexPath.section].customize[indexPath.row]) {
case 1:
cell.radioBtn.isHidden = true
cell.checkBoxBtn.isHidden = false
break
case 2:
cell.radioBtn.isHidden = false
cell.checkBoxBtn.isHidden = true
break
default:
print("Invalid choose")
}
cell.radioBtn.addTarget(self, action: #selector(ViewController.radioBtnaction), for: .touchUpInside)
cell.checkBoxBtn.addTarget(self, action: #selector(ViewController.checkBoxBtnaction), for: .touchUpInside)
return cell
}
在我的应用程序中有多个部分,即复选框和单选按钮。
在 tableview 单元格中,我创建了两个 UIButton,如果是复选框或单选按钮,它会根据响应而变化。
这是我的代码。
var radioControllerChoice : SSRadioButtonsController = SSRadioButtonsController()
var radioControllerDip : SSRadioButtonsController = SSRadioButtonsController()
var radioControllerDrink : SSRadioButtonsController = SSRadioButtonsController()
var radioControllerSides : SSRadioButtonsController = SSRadioButtonsController()
var radioControllerOption : SSRadioButtonsController = SSRadioButtonsController()
func numberOfSections(in tableView: UITableView) -> Int {
return table_data.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell:CustomiseTableViewCell = tableView.dequeueReusableCell(withIdentifier: "Customise") as! CustomiseTableViewCell
cell.name.text?=table_data[indexPath.section].menu_name[indexPath.row]
print(table_data[indexPath.section].customize[indexPath.row])
switch indexPath.section {
case 2:
radioControllerChoice.addButton(cell.radioBtn)
case 3:
radioControllerDip.addButton(cell.radioBtn)
case 4:
radioControllerDrink.addButton(cell.radioBtn)
case 5:
radioControllerSides.addButton(cell.radioBtn)
case 6:
radioControllerOption.addButton(cell.radioBtn)
default:
print("no case found")
}
switch Int(table_data[indexPath.section].customize[indexPath.row]) {
case 1:
cell.radioBtn.isHidden = true
cell.checkBoxBtn.isHidden = false
break
case 2:
cell.radioBtn.isHidden = false
cell.checkBoxBtn.isHidden = true
break
default:
print("Invalid choose")
}
cell.radioBtn.addTarget(self, action: #selector(ViewController.didSelectButton), for: .touchUpInside)
cell.radioBtn.tag = indexPath.row
cell.checkBoxBtn.addTarget(self, action: #selector(ViewController.checkBoxBtnaction), for: .touchUpInside)
return cell
}
table_data 是数组,我使用 struct 从 Web 服务获取数组值。
我的问题是:
为单选按钮编写按钮操作。
func didSelectButton(selectedButton: UIButton?)
{
print("selectedButton",(selectedButton?.tag)!)
let tagVal = (selectedButton?.tag)!
print("tagVal",tagVal)
}
在按钮点击动作选择中,表格视图中的一个单独部分显示在图像中。 在那个部分想要 select 和 deselect 单选按钮。当 select 起司时它会 selected,然后我将 select 三层起司意味着,起司自动 deselect。只想 select 该部分中的一项。
每个部分都有一个带有单选按钮的不同项目。
如果 selected 一个单选按钮它将 select,在 selected 任何其他单选按钮之后意味着上一个 selected 按钮想要自动取消 select。它应该只在单选按钮的表视图的每个部分中发生。
无论项目 select 想要将其存储在字符串中。
具有多个 selection 的复选框需要相同的按钮操作。
func checkBoxBtnaction(sender:UIButton)
{
}
在此处输入图片描述
帮帮我。提前致谢。
我建议采用以下方法:
1) 为按钮创建模型
2) 取一个定义单选案例的枚举,勾选框
3) 在您的单元格中创建一个普通按钮 UI
4) 根据枚举状态将按钮修改为单选按钮或复选框,从您的 UI 我想更改按钮顶部的图像应该可以解决问题
这样两个按钮将具有相同的操作处理程序,然后您可以根据模型枚举值决定要执行的操作
为单选按钮使用 this 库并以此更新您的代码并尝试
var radioButtonController = SSRadioButtonsController()
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell:CustomiseTableViewCell = tableView.dequeueReusableCell(withIdentifier: "Customise") as! CustomiseTableViewCell
cell.name.text?=table_data[indexPath.section].menu_name[indexPath.row]
print(table_data[indexPath.section].customize[indexPath.row])
radioButtonController.addButton(cell.radioBtn)
switch Int(table_data[indexPath.section].customize[indexPath.row]) {
case 1:
cell.radioBtn.isHidden = true
cell.checkBoxBtn.isHidden = false
break
case 2:
cell.radioBtn.isHidden = false
cell.checkBoxBtn.isHidden = true
break
default:
print("Invalid choose")
}
cell.radioBtn.addTarget(self, action: #selector(ViewController.radioBtnaction), for: .touchUpInside)
cell.checkBoxBtn.addTarget(self, action: #selector(ViewController.checkBoxBtnaction), for: .touchUpInside)
return cell
}
编辑:
var radioControllerChoice : SSRadioButtonsController = SSRadioButtonsController()
var radioControllerDip : SSRadioButtonsController = SSRadioButtonsController()
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell:CustomiseTableViewCell = tableView.dequeueReusableCell(withIdentifier: "Customise") as! CustomiseTableViewCell
cell.name.text?=table_data[indexPath.section].menu_name[indexPath.row]
print(table_data[indexPath.section].customize[indexPath.row])
switch indexPath.section {
case 1:
radioControllerChoice.addButton(cell.radioBtn)
case 2:
radioControllerDip.addButton(cell.radioBtn)
default:
print("no case found")
}
switch Int(table_data[indexPath.section].customize[indexPath.row]) {
case 1:
cell.radioBtn.isHidden = true
cell.checkBoxBtn.isHidden = false
break
case 2:
cell.radioBtn.isHidden = false
cell.checkBoxBtn.isHidden = true
break
default:
print("Invalid choose")
}
cell.radioBtn.addTarget(self, action: #selector(ViewController.radioBtnaction), for: .touchUpInside)
cell.checkBoxBtn.addTarget(self, action: #selector(ViewController.checkBoxBtnaction), for: .touchUpInside)
return cell
}