如何在UITableView的页脚视图中添加一个按钮,但保留最后一个单元格分隔符?

时间:2017-01-26 07:38:01

标签: ios swift uitableview

我想在最后一个表格单元格下面添加一个加号按钮。它应该是这样的:

enter image description here

为了得到这个结果,我使用了这段代码:

let footerView = UIView()
tableView.tableFooterView = footerView

addButton.frame = CGRect(x: 0, y: 0, width: 45, height: 45)
addButton.setTitle("+", for: [])
addButton.titleLabel?.font = UIFont.systemFont(ofSize: 30)

footerView.addSubview(addButton)

addButton.addTarget(self, action: #selector(addSection), for: .touchUpInside)

它看起来完全是我想要的但问题是,由于页脚视图的框架为零,因此内部的加号按钮对触摸事件没有响应。

如果我将框架设置为页脚视图:

let footerView = UIView(frame: CGRect(x: 0, y: 0, width: 45, height: 45))

按钮开始响应触摸,但最后一个单元格的分隔线消失了:

enter image description here

有没有办法将一些交互式内容添加到表格页脚视图但保留最后一个分隔线?

2 个答案:

答案 0 :(得分:0)

像这样在footerView的顶部添加一行。根据您的需要设置x值。

let line = UIView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: 1))
line.backgroundColor = UIColor.gray
footerView.addSubview(line)

答案 1 :(得分:0)

最可靠的方法是不使用默认的分隔线,而是手动将其添加到单元格中。在返回单元格之前,只需将此代码复制到您的单元格中即可:

var separator:UIView!
    if let s = cell.viewWithTag(1000)
    {
        separator = s
    }
    else
    {
        separator = UIView()
        separator.tag = 1000
        separator.backgroundColor = TheColorYouWantForYourSeparator
        separator.translatesAutoresizingMaskIntoConstraints = false
        cell.addSubview(separator)

        // Swiper constraints
        let leadingConstraint = NSLayoutConstraint(item: separator, attribute: .leading, relatedBy: .equal, toItem: cell, attribute: .leading, multiplier: 1, constant: 15)
        let heightConstraint = NSLayoutConstraint(item: separator, attribute: .height, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, multiplier: 1, constant: 0.5)
        let bottomConstraint = NSLayoutConstraint(item: cell, attribute: .bottom, relatedBy: .equal, toItem: separator, attribute: .bottom, multiplier: 1, constant:0)
        let trailingConstraint = NSLayoutConstraint(item: cell, attribute: .trailing, relatedBy: .equal, toItem: separator, attribute: .trailing, multiplier: 1, constant: 15)
        cell.addConstraints([bottomConstraint, leadingConstraint, heightConstraint, trailingConstraint])
    }

这会生成一个可配置的分隔符视图。使用约束来决定它的形状。