Swift:将包含自定义标签的单元格添加到UITableView

时间:2018-02-14 12:30:04

标签: swift uitableview

如何以编程方式将单元格添加到UITableview并使用myArray[cellNumber]中的数据填充单元格。 数组中的数据是String类型。 tableview只是一个与插座连接的UITableView。

我发现的所有例子都是+30行或者不起作用...... 我使用的是swift 4和UIKit。

2 个答案:

答案 0 :(得分:0)

  1. 在Xcode中,使用" 文件>新>文件> Cocoa Touch Class "。
  2. 使用UITableViewController作为基类
  3. 你会找到一个大模板,只需实现:

    • 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:)以编程方式注册单元格。

  4. 以下是更全面的指南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,您必须为情节提要文件中的单元格设置重用标识符。