可以通过以下步骤实现:
下面是一个示例代码:
import UIKit
class CustomHeaderView: UIView {
var imageView: UIImageView!
override init(frame: CGRect) {
super.init(frame: frame)
imageView = UIImageView(frame: bounds)
imageView.contentMode = .scaleAspectFit
addSubview(imageView)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
let tableView1 = UITableView(frame: CGRect(x: 0, y: 0, width: 200, height: 200), style: .plain)
let tableView2 = UITableView(frame: CGRect(x: 0, y: 200, width: 200, height: 200), style: .plain)
let image = UIImage(named: "shared_image")
override func viewDidLoad() {
super.viewDidLoad()
tableView1.delegate = self
tableView1.dataSource = self
tableView1.register(UITableViewCell.self, forCellReuseIdentifier: "Cell")
tableView2.delegate = self
tableView2.dataSource = self
tableView2.register(UITableViewCell.self, forCellReuseIdentifier: "Cell")
view.addSubview(tableView1)
view.addSubview(tableView2)
}
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 = "Row \(indexPath.row)"
return cell
}
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 50
}
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerView = CustomHeaderView(frame: CGRect(x: 0, y: 0, width: tableView.frame.width, height: 50))
headerView.imageView.image = image
return headerView
}
func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
if tableView == tableView1 {
let headerView = view as! CustomHeaderView
headerView.imageView.image = image
} else if tableView == tableView2 {
let headerView = view as! CustomHeaderView
headerView.imageView.image = image
}
}
}
在这个示例中,我们创建了两个UITableView,每个UITableView都有自己的表头视图。在代理方法中,我们将共享的图像设置给每个表头视图,从而实现了两个UITableView标头共享同一图像。
注意:这个示例中使用了自定义的表头视图和UIImageView来显示图像,你可以根据实际需求进行修改和扩展。
领取专属 10元无门槛券
手把手带您无忧上云