要将按钮添加到UITableView的页脚视图,同时保留最后一个单元格分隔符,可以按照以下步骤进行操作:
tableView(_:viewForFooterInSection:)
方法中,返回上述自定义的UIView作为页脚视图。tableView(_:heightForFooterInSection:)
方法中,返回页脚视图的高度,以适应按钮和分隔符的显示。以下是一个示例代码,演示如何实现上述功能:
import UIKit
class CustomFooterView: UIView {
let button: UIButton = {
let button = UIButton(type: .system)
button.setTitle("按钮", for: .normal)
button.setTitleColor(.white, for: .normal)
button.backgroundColor = .blue
button.addTarget(self, action: #selector(buttonTapped), for: .touchUpInside)
return button
}()
let separatorView: UIView = {
let view = UIView()
view.backgroundColor = .lightGray
return view
}()
override init(frame: CGRect) {
super.init(frame: frame)
addSubview(button)
addSubview(separatorView)
// 使用Auto Layout布局
button.translatesAutoresizingMaskIntoConstraints = false
separatorView.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
button.leadingAnchor.constraint(equalTo: leadingAnchor, constant: 16),
button.trailingAnchor.constraint(equalTo: trailingAnchor, constant: -16),
button.topAnchor.constraint(equalTo: topAnchor, constant: 8),
button.bottomAnchor.constraint(equalTo: separatorView.topAnchor, constant: -8),
separatorView.leadingAnchor.constraint(equalTo: leadingAnchor),
separatorView.trailingAnchor.constraint(equalTo: trailingAnchor),
separatorView.bottomAnchor.constraint(equalTo: bottomAnchor),
separatorView.heightAnchor.constraint(equalToConstant: 1)
])
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
@objc func buttonTapped() {
// 处理按钮点击事件的逻辑
}
}
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
let tableView = UITableView()
override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = self
tableView.dataSource = self
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell")
view.addSubview(tableView)
// 使用Auto Layout布局
tableView.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
tableView.topAnchor.constraint(equalTo: view.topAnchor),
tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor)
])
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 10
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
cell.textLabel?.text = "单元格 \(indexPath.row)"
return cell
}
func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
let footerView = CustomFooterView(frame: CGRect(x: 0, y: 0, width: tableView.frame.width, height: 60))
return footerView
}
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return 60
}
}
这段代码创建了一个包含10个单元格的UITableView,并在每个分区的页脚视图中添加了一个带有按钮和分隔符的自定义视图。你可以根据实际需求进行修改和扩展。
领取专属 10元无门槛券
手把手带您无忧上云