Вставьте два массива в tableView - Ошибка подключения - PullRequest
0 голосов
/ 10 марта 2019

Отредактировано:

Я пытаюсь вставить два массива в одно табличное представление с двумя метками ячеек.Но не совсем уверен, как я могу все это преобразовать и заставить его работать.Вот мой код.

В верхней части основного 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 Ответ

1 голос
/ 10 марта 2019

При создании пользовательского 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
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...