在tableView中插入两个数组-连接时出错

时间:2019-03-10 12:11:50

标签: ios swift uitableview

编辑:

我正在尝试将两个数组插入带有两个单元格标签的一个tableview中。但不是很确定如何将其全部转换并使其工作。到目前为止,这是我的代码。

在主ViewController的顶部(tableView所在的位置)

class ScoreBoardViewController: UIViewController, UITableViewDelegate, UITableViewDataSource

    var countedArray: [String] = []
    var nameArray: [String] = []

    @IBOutlet weak var tableView: UITableView!
    var list: [pointsTxt] = []
  

其他信息:我添加了 self.tableView.delegate = self

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
    {
        return list.count

    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
    {
        let listPath = list[indexPath.row]
        let cell = tableView.dequeueReusableCell(withIdentifier: "pointsCell") as! ScoreCell
        cell.setCell(list: listPath)

        return cell
    }

    func createArray() -> [pointsTxt]
    {
        var tempTxt: [pointsTxt] = []

        let txt = pointsTxt(person: nameArray, points: countedArray)

        tempTxt.append(txt)

        self.list = tempTxt
        self.tableView.reloadData()

        return list
    }

单元格的类

class ScoreCell: UITableViewCell
{

    @IBOutlet weak var person: UILabel!
    @IBOutlet weak var points: UILabel!


    func setCell(list: pointsTxt)
    {
        person.text = list.person
        points.text = list.points
    }
}
  

错误:无法将类型“ [String]”的值分配为类型“ String?”


数组的类

class pointsTxt
{
    var person: [String] = []
    var points: [String] = []

    init(person: [String] = [], points: [String] = [])
    {
        self.person = person
        self.points = points
    }
}

希望您能理解我的需求。预先感谢!

1 个答案:

答案 0 :(得分:1)

创建自定义tableViewCell时必须遵循以下步骤:

  1. 子类UITableViewCell
  2. 将您的奥特莱斯添加到该子类中
  3. 将您的子类注册到TableView
  4. rowAtIndexPath函数的代码示例:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    if indexPath.row < nameArray.count {

        // load from customerDetails array
        let names = nameArray[indexPath.row]

        let cell = tableView.dequeueReusableCell(withIdentifier: "listCell", for: indexPath) as! UITableViewSubclassCell
        cell.person.text = names

        return cell
    } else {
        // load from customerDetails2 array
        let points = countedArray[indexPath.row - nameArray.count]

        let cell = tableView.dequeueReusableCell(withIdentifier: "listCell", for: indexPath) as! UITableViewSubclassCell
        cell.person.text = points
        return cell
    }
}