Swift 以编程方式在一个UIVIewController中添加两个UITableView,并希望使用UISegmentedControl更改控制器的视图
我想基于2个带有segmentedControl的表格视图更改ViewController的视图。我已经用程序化的方法实现了这一目标。我创建了两个TableView和一个SegmentedControl。但是,当我更改segmentedControl时,它保持在相同的索引上,但更改了视图。我必须在每个片段上点击两次才能到达它。为什么会这样 这是我的密码:Swift 以编程方式在一个UIVIewController中添加两个UITableView,并希望使用UISegmentedControl更改控制器的视图,swift,uitableview,uisegmentedcontrol,Swift,Uitableview,Uisegmentedcontrol,我想基于2个带有segmentedControl的表格视图更改ViewController的视图。我已经用程序化的方法实现了这一目标。我创建了两个TableView和一个SegmentedControl。但是,当我更改segmentedControl时,它保持在相同的索引上,但更改了视图。我必须在每个片段上点击两次才能到达它。为什么会这样 这是我的密码: class ViewController: UIViewController { override func viewDidLoad
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
configureFirstTableView()
}
var firstTableView = UITableView()
var secondTableView = UITableView()
func configureFirstTableView() {
firstTableView.frame = self.view.frame
firstTableView.delegate = self
firstTableView.dataSource = self
firstTableView.register(UITableViewCell.self, forCellReuseIdentifier: "FirstCell")
view.addSubview(firstTableView)
}
func configureSecondTableView() {
secondTableView.frame = self.view.frame
secondTableView.delegate = self
secondTableView.dataSource = self
secondTableView.register(UITableViewCell.self, forCellReuseIdentifier: "SecondCell")
view.addSubview(secondTableView)
}
func configureSegmentedControl() -> UISegmentedControl {
let segmentedControl = UISegmentedControl(frame: CGRect(x: 10, y: 5, width: view.frame.width - 10, height: 30))
segmentedControl.insertSegment(withTitle: "First", at: 0, animated: false)
segmentedControl.insertSegment(withTitle: "Second", at: 1, animated: false)
segmentedControl.selectedSegmentIndex = 0
segmentedControl.addTarget(self, action: #selector(changeSegmentedControlValue(_:)), for: .valueChanged)
return segmentedControl
}
@objc func changeSegmentedControlValue(_ sender: UISegmentedControl) {
switch sender.selectedSegmentIndex {
case 0:
print("1")
configureFirstTableView()
case 1:
print("2")
configureSecondTableView()
default:
break
}
}
}
extension ViewController: UITableViewDelegate, UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
var count: Int?
if tableView == firstTableView {
count = 3
return count!
} else if tableView == secondTableView {
count = 4
return count!
}
return count!
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if tableView == firstTableView {
let cell = tableView.dequeueReusableCell(withIdentifier: "FirstCell", for: indexPath)
cell.textLabel?.text = "First"
return cell
} else if tableView == secondTableView {
let cell = tableView.dequeueReusableCell(withIdentifier: "SecondCell", for: indexPath)
cell.textLabel?.text = "Second"
return cell
}
return UITableViewCell()
}
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let v = UIView()
v.backgroundColor = .white
v.addSubview(configureSegmentedControl())
return v
}
}
使用一个表视图。只要在数据段更改时更新数据源/委托即可。@rmaddy。问题是我需要4个tableVIew,它们将具有自定义tableVIew单元格。其中两个将具有tableviewCell,其中两个将在tableviewCell中具有collectionVIew。这就是为什么我在一个VIewController中需要非常不同的数据,我想用分段控件更改TableView。我无法用一个tableView解决我的问题