您好我正在尝试使用一个包含两个tableView的页面构建一个应用程序。我试图通过标签区分它们,但它们不能很好地协同工作,所以我想得到一些帮助。我以编程方式完成了这一切,因此没有IBOutlet。 下面是为便于阅读而修改的代码。感谢。
class test: UIViewController,UITableViewDataSource, UITableViewDelegate {
var ingredientItems = 3
var stepItems = 3
let ingredientsTableView: UITableView = {
let tv = UITableView()
tv.tag = 101
tv.translatesAutoresizingMaskIntoConstraints = false
return tv
}()
let stepsTableView: UITableView = {
let tv = UITableView()
tv.tag = 102
tv.translatesAutoresizingMaskIntoConstraints = false
return tv
}()
override func viewDidLoad() {
super.viewDidLoad()
ingredientsTableView.delegate = self
ingredientsTableView.dataSource = self
ingredientsTableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
stepsTableView.delegate = self
stepsTableView.dataSource = self
stepsTableView.register(UITableViewCell.self, forCellReuseIdentifier: "stepscell")
view.addSubview(ingredientsTableView)
view.addSubview(stepsTableView)
setupIngredientsTableView()//just setting up anchors
setupStepsTableView()//just setting up anchors
}
func setupIngredientsTableView() {
//Constraints : need x,y, width and height
ingredientsTableView.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
ingredientsTableView.topAnchor.constraint(equalTo: view.topAnchor, constant: 100).isActive = true
ingredientsTableView.widthAnchor.constraint(equalTo: view.widthAnchor, constant: -24).isActive = true
ingredientsTableView.heightAnchor.constraint(equalToConstant: 200).isActive = true
}
func setupStepsTableView() {
//Constraints : need x,y, width and height
stepsTableView.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
stepsTableView.topAnchor.constraint(equalTo: view.topAnchor, constant: 350).isActive = true
stepsTableView.widthAnchor.constraint(equalTo: view.widthAnchor, constant: -24).isActive = true
ingredientsTableView.heightAnchor.constraint(equalToConstant: 200).isActive = true
}
//
// table view
//
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if tableView.tag == 101{
return self.ingredientItems
}else{
return self.stepItems
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if tableView.tag == 101{
tableView.rowHeight = 30.0
let cell: UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "cell")! as UITableViewCell
cell.textLabel?.text = String(describing: indexPath)
return cell
}else{
tableView.rowHeight = 30.0
let cell: UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "stepscell")! as UITableViewCell
cell.textLabel?.text = "test"
return cell
}
}
}
答案 0 :(得分:2)
你刚在setupStepsTableView函数中输入了一个拼写错误,你设置了ingredientsTableView的高度锚,而不是stepsTableView(我把** **)
func setupStepsTableView() {
//Constraints : need x,y, width and height
stepsTableView.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
stepsTableView.topAnchor.constraint(equalTo: view.topAnchor, constant: 350).isActive = true
stepsTableView.widthAnchor.constraint(equalTo: view.widthAnchor, constant: -24).isActive = true
**ingredientsTableView.heightAnchor.constraint(equalToConstant: 200).isActive = true**
}
相反你应该拥有它
stepsTableView.heightAnchor.constraint(equalToConstant: 200).isActive = true
只要正确设置tableViews的委托和数据,在一个UIViewController类中有两个表视图是没有问题的。我也看到你的标签正常工作。您的代码工作正常,请查看结果。