如何以编程方式将单元格添加到UITableview并使用myArray[cellNumber]
中的数据填充单元格。
数组中的数据是String类型。 tableview只是一个与插座连接的UITableView。
我发现的所有例子都是+30行或者不起作用...... 我使用的是swift 4和UIKit。
答案 0 :(得分:0)
UITableViewController
作为基类你会找到一个大模板,只需实现:
numberOfSections(in tableView: UITableView) -> Int
,让它返回1.您现在只需要一个部分。tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
,让它返回数组的大小 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
。取消注释,实现它。
注意:要实现tableView(_:cellForRowAt :),您必须在故事板中注册一个单元格,并在此函数中使用其名称。或者使用register(_:forCellReuseIdentifier:)以编程方式注册单元格。
以下是更全面的指南iOS Getting Started Guide UITableView
实施例:
override func numberOfSections(in tableView: UITableView) -> Int {
return 1 // Only one section
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return myArray.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// "cell" is registered in the Storyboard
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
// The registered cell, has a view with tag 1 that is UILabel as an example
// IndexPath is a data structure that has "section" and "row"
// It located the cell in your tableview/collectionview
(cell.viewWithTag(1) as? UILabel)?.text = myArray[indexPath.row]
return cell
}
答案 1 :(得分:0)
1.您的ViewController必须符合UITableViewDelegate,UITableViewDataSource。 这意味着您的类文件看起来像这样
class MyCustomViewController: UIViewController, UITableViewDelegate, UITableViewDataSource
2.您必须通过拖动或在viewDidLoad中的代码中,通过键入以下内容,将故事板中的UITableView对象的dataSource和委托属性分配给viewController:
myTableView.delegate = self
myTableView.dataSource = self
3.您的类必须覆盖UITableView所需的委托/数据源方法numberOfRowsInSection和cellForRowAt:
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return myArray.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = myArray[indexPath.row]
return cell
}
请注意,要使用dequeReusableCell,您必须为情节提要文件中的单元格设置重用标识符。