是一种常见的需求,可以通过以下步骤来实现:
下面是一个示例代码:
import UIKit
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var tableView: UITableView!
enum Condition {
case condition1
case condition2
}
var currentCondition: Condition = .condition1
var data1: [String] = ["Data 1-1", "Data 1-2", "Data 1-3"]
var data2: [String] = ["Data 2-1", "Data 2-2", "Data 2-3"]
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self
tableView.delegate = self
}
// 切换条件
func switchCondition() {
if currentCondition == .condition1 {
currentCondition = .condition2
} else {
currentCondition = .condition1
}
tableView.reloadData()
}
// UITableViewDataSource
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
switch currentCondition {
case .condition1:
return data1.count
case .condition2:
return data2.count
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
switch currentCondition {
case .condition1:
cell.textLabel?.text = data1[indexPath.row]
case .condition2:
cell.textLabel?.text = data2[indexPath.row]
}
return cell
}
// UITableViewDelegate
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
// 处理选中行的操作
}
}
在上述示例中,我们通过一个枚举类型Condition
表示不同的条件,通过currentCondition
变量来表示当前的条件。根据当前条件,在数据源方法tableView(_:numberOfRowsInSection:)
和tableView(_:cellForRowAt:)
中返回对应的数据集的数量和内容。在切换条件时,调用switchCondition()
方法并重新加载表格数据tableView.reloadData()
。
这样,根据条件在同一UITableView中显示不同的数据集就可以实现了。根据具体的业务需求,你可以根据这个示例进行修改和扩展。
领取专属 10元无门槛券
手把手带您无忧上云