在一个类中实现两个具有不同委托和数据源方法的TableView,可以通过以下步骤实现:
下面是一个示例代码:
import UIKit
class DualTableViewDelegate: NSObject, UITableViewDelegate, UITableViewDataSource {
let tableView1: UITableView
let tableView2: UITableView
init(tableView1: UITableView, tableView2: UITableView) {
self.tableView1 = tableView1
self.tableView2 = tableView2
super.init()
self.tableView1.delegate = self
self.tableView1.dataSource = self
self.tableView2.delegate = self
self.tableView2.dataSource = self
}
// 实现tableView1的委托和数据源方法
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if tableView == tableView1 {
// 返回tableView1的行数
return 10
} else {
// 返回tableView2的行数
return 5
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if tableView == tableView1 {
// 返回tableView1的cell
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell1", for: indexPath)
cell.textLabel?.text = "TableView 1 - Row \(indexPath.row)"
return cell
} else {
// 返回tableView2的cell
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell2", for: indexPath)
cell.textLabel?.text = "TableView 2 - Row \(indexPath.row)"
return cell
}
}
// 实现tableView2的委托和数据源方法
// ...
}
// 在视图控制器中使用DualTableViewDelegate
class ViewController: UIViewController {
@IBOutlet weak var tableView1: UITableView!
@IBOutlet weak var tableView2: UITableView!
var dualTableViewDelegate: DualTableViewDelegate!
override func viewDidLoad() {
super.viewDidLoad()
dualTableViewDelegate = DualTableViewDelegate(tableView1: tableView1, tableView2: tableView2)
tableView1.delegate = dualTableViewDelegate
tableView1.dataSource = dualTableViewDelegate
tableView2.delegate = dualTableViewDelegate
tableView2.dataSource = dualTableViewDelegate
}
}
在上述示例中,我们创建了一个名为DualTableViewDelegate的类,该类实现了UITableViewDelegate和UITableViewDataSource协议。在初始化方法中,我们将两个TableView对象传入,并设置它们的委托和数据源为DualTableViewDelegate实例。然后,根据当前的TableView对象,我们在委托和数据源方法中提供不同的实现。
在视图控制器中,我们实例化了DualTableViewDelegate,并将其设置为两个TableView的委托和数据源。这样,每个TableView都会使用不同的委托和数据源方法来展示数据。
请注意,上述示例中的代码是使用Swift语言编写的,如果你使用其他编程语言,可以根据相应语言的语法和规范进行实现。
领取专属 10元无门槛券
手把手带您无忧上云