Вставить два массива в tableView - ошибка подключения

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

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

В верхней части основного ViewController (где находится tableView)

class ScoreBoardViewController: UIViewController, UITableViewDelegate, UITableViewDataSource

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

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

Additional info: I've added the 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
    }
}

ERROR: Cannot assign value of type '[String]' to type 'String?'


Класс для массива

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

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

Надеюсь, вы понимаете, что мне нужно. Заранее спасибо!

Вы подключили розетки к viewController? это должно быть что-то вроде var label = UILabel(), а затем вы устанавливаете его следующим образом: label.text = points, в противном случае вы должны посмотреть, как подключить розетки из раскадровки.

PaFi 10.03.2019 13:14

@PaFi Да, я сделал

Putte 10.03.2019 13:15

можешь показать код как ты подключил розетки?

PaFi 10.03.2019 13:16

Дай мне две минуты. :) Спасибо

Putte 10.03.2019 13:17

вам также нужно перейти к правильному UITableviewClass, я опубликую ответ в качестве примера. Обновлено: вы создали подкласс UITableView?

PaFi 10.03.2019 13:21
imgur.com/a/swXVXJh - @PaFi
Putte 10.03.2019 13:23

@PaFi Я не создавал дополнительный подкласс.

Putte 10.03.2019 13:25

Пожалуйста, покажите остальную часть кода.

drewster 10.03.2019 15:02

@drewster Извините за время. Был действительно насыщенный день. Но проверьте правку. :)

Putte 11.03.2019 18:56
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
9
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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
    }
}

почему-то не работает форматирование кода, но вы понимаете, о чем я?

PaFi 10.03.2019 13:35

Я добавил точку между нумерованным списком и кодом, и теперь он отформатирован правильно. Со списками, за которыми следует код, происходят какие-то странные вещи, и прямо сейчас я не знаю, как с этим правильно обращаться, отсюда и «хак».

Joakim Danielson 10.03.2019 13:49

@PaFi Хорошо, так что. Я добавил подкласс и т. д. Но получаю это при вставке массивов. -> imgur.com/a/1ATWevk

Putte 10.03.2019 13:55

вам нужно получить доступ к nameArray через индекс, например, как nameArray[0]

PaFi 10.03.2019 13:58

Другие вопросы по теме