在自定义UITableViewCell Swift

时间:2017-09-26 21:19:30

标签: ios swift uitableview uibutton selector

我有一个自定义的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来处理所有事情...

1 个答案:

答案 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 ..