如何创建两个自定义表格单元格按钮?

时间:2016-09-15 06:33:55

标签: ios swift

我正准备一张桌子,当我刷一下细胞时,我需要得到两个圆形按钮。每个按钮应该有一个图像和一个标签。

override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? {
    var hello = UITableViewRowAction(style: .Default, title: "Image") { (action, indexPath) in

    // do some action

    if let buttonImage = UIImage(named: "Image") {
        //  self.bgColor = UIColor.imageWithBackgroundColor(image: buttonImage, bgColor: UIColor.blueColor())
    }
    return editButtonItem()
}

1 个答案:

答案 0 :(得分:0)

首先,您的代码存在一些问题:

  1. 您返回editButtonItem()方法的结果,该方法基本上会丢弃您的hello操作。我会从它的名字中假设,这个方法返回了一个动作,而不是你想要的两个动作。
  2. 在您的操作处理程序中,您尝试在self上设置背景。阻止从父作用域捕获变量,因此此块中的selfhello操作无关,而是与实现editActionsForRowAtIndexPath方法的类相关。
  3. 如何实现您的需求(带标题和图像的两个按钮):

    override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? {
        var firstAction = UITableViewRowAction(style: .Default, title: "First") { (action, indexPath) in
            // action handler code here
            // this code will be run only and if the user presses the button
            // The input parameters to this are the action itself, and indexPath so that you know in which row the action was clicked
        }
        var secondAction = UITableViewRowAction(style: .Default, title: "Second") { (action, indexPath) in
            // action handler code here
        }
    
        firstAction.backgroundColor = UIColor(patternImage: UIImage(named: "firstImageName")!)
        secondAction.backgroundColor = UIColor(patternImage: UIImage(named:"secondImageName")!)
    
        return [firstAction, secondAction]
    }
    

    我们创建两个单独的动作,分配它们的背景颜色以使用模式图像并返回包含我们的动作的数组。这是改变UITableViewRowAction外观的最佳方法 - 我们可以看到from the docs,此类不会从UIView继承。

    如果您想更多地自定义外观,您应该寻找外部库或从头开始实施您自己的解决方案。