我有一个自定义的UITableViewCell子类,我在单元格中放了两个按钮,我希望它们都可以点击,但到目前为止我甚至无法触发任何类型的点击(除了行选择,但我禁用了UITableViewController子类)。基本上当选择了两个按钮之一时,它应该删除这两个按钮并使用可选择的选项列表(也是按钮)更新单元格中的内容。我正在以编程方式完成所有工作(没有IB)。
My TableViewCell with Initial Two Buttons
我已经环顾了很多,并没有找到任何处理tableViewCell中超过一个按钮的东西。目前我一直在尝试在我的UITableViewCell的awakeFromNib()中为我的按钮添加目标:
for button in initialChoiceButtons{
button.isUserInteractionEnabled = true
button.addTarget(self, action: #selector(initialChoicePressed(sender:)), for: UIControlEvents.touchUpInside)
}
我尝试过的一件事是在我的tableView in cellForRowAt我的自定义单元格是将我的按钮带到单元格的前面:
for button in (cell as! FormDropDownTableViewCell).initialChoiceButtons{
cell.bringSubview(toFront: button)
}
我真的很难过,觉得这很容易。我即将在scrollview中使用stackView来处理所有事情...
答案 0 :(得分:0)
好的,所以我找到了一种方法来分隔我的tableviewcell中的按钮点击,通过创建一个委托协议,该协议具有一个函数,我将从tableviewcontroller中的目标调用tableviewcell中的每个按钮。
func handleTap(button:DelegatingButton){
switch button.actionType{
case "initialChoiceSelect":
initialChoicePressed(initialChoice:button) //specific method for certain button.actionType also in my FormDropDownTableViewCell
case "cardTypeSelect":
cardTypeSelected(selectedCardType:button)
default:
break
}
}
在我的FormDropDownTableViewCell中我符合UIButtonSelectedDelegate并实现handleTap,如下所示:
button.addTarget(self, action: #selector(handleButtonTaps), for: UIControlEvents.touchUpInside)
现在我在tableviewcontroller中为cellForRowAt中的每个按钮添加target-actions,如下所示:
func handleButtonTaps(sender: DelegatingButton){
sender.selectorDelegate?.handleTap(button: sender)
}
并且tableviewcontroller中的handleButtonTaps函数很简单:
{{1}}
喜欢和自己说话= P ..