如何以编程方式将单元格添加到UITableview
并使用myArray [cellNumber]中的数据填充单元格。数组中的数据是String类型。 tableview只是一个与插座连接的UITableView
。
我发现的所有例子都是+30行或者不起作用......我使用swift 4和UIKit
。
答案 0 :(得分:1)
let array = ["Monday", "Friday", "Saturday", "Sunday"]
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = array[indexPath.row]
return cell
}
如果这对您不起作用,我需要您的代码中的更多信息来检查另一个可能的错误。
如果您从代码创建tableview,则需要定义
tableview.datasource = self
tableview.delegate = self
并使课程从UITableViewDelegate
和UITableViewDataSource
答案 1 :(得分:1)
这是您处理单元格选择的方式。
// Data model: These strings will be the data for the table view cells
let myArray: [String] = ["Horse", "Cow", "Camel", "Sheep", "Goat"]
// create a cell for each table view row
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// create a new cell if needed or reuse an old one
var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell
// set the text from the data model
cell.textLabel?.text = self.myArray[indexPath.row]
return cell
}
你应该考虑的事项:
UITableViewDelegate
和UITableViewDataSource
viewDidLoad
方法中调用registerClass(_:forCellReuseIdentifier:)
。var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCel
到目前为止,您的ViewController类应如下所示:
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet
var tableView: UITableView
var myArray: [String] = ["We", "Heart", "Swift"]
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.myArray.count;
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell
cell.textLabel?.text = self.myArray[indexPath.row]
return cell
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
println("You selected cell #\(indexPath.row)!")
}
}
以下示例是We❤Swift的longer post的改编和简化。
Apple Developers Doc Create a Table View
答案 2 :(得分:0)
以下示例应该适合您。享受:)
class TableviewDemoViewController: UIViewController, UITableViewDelegate , UITableViewDataSource {
//MARK: - IBOutlet
@IBOutlet weak var tableView: UITableView!
//MARK: - Variables
let arrayToPopulate = ["Monday", "Tuesday", "Wednesday","Thursday", "Friday", "Saturday", "Sunday"]
let tableviewCellHeight = 50.0
//MARK: - View initializer
override func viewDidLoad() {
super.viewDidLoad()
self.setupTableview()
}
func setupTableview() {
tableView.datasource = self
tableView.delegate = self
}
//MARK: -UITableViewDelegate
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return arrayToPopulate.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = arrayToPopulate[indexPath.row]
return cell
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return tableviewCellHeight
} }