Отредактировано:
Я пытаюсь вставить два массива в одну таблицу с двумя метками ячеек. Но не совсем уверен, как я могу преобразовать все это и заставить это работать. Вот мой код до сих пор.
В верхней части основного 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
}
}
Надеюсь, вы понимаете, что мне нужно. Заранее спасибо!
@PaFi Да, я сделал
можешь показать код как ты подключил розетки?
Дай мне две минуты. :) Спасибо
вам также нужно перейти к правильному UITableviewClass, я опубликую ответ в качестве примера. Обновлено: вы создали подкласс UITableView?
@PaFi Я не создавал дополнительный подкласс.
Пожалуйста, покажите остальную часть кода.
@drewster Извините за время. Был действительно насыщенный день. Но проверьте правку. :)





При создании пользовательского tableViewCell необходимо выполнить следующие шаги:
.
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 Хорошо, так что. Я добавил подкласс и т. д. Но получаю это при вставке массивов. -> imgur.com/a/1ATWevk
вам нужно получить доступ к nameArray через индекс, например, как nameArray[0]
Вы подключили розетки к viewController? это должно быть что-то вроде var label = UILabel(), а затем вы устанавливаете его следующим образом: label.text = points, в противном случае вы должны посмотреть, как подключить розетки из раскадровки.