Добавление метки в ячейку прототипа - PullRequest
0 голосов
/ 06 декабря 2018

Мне нужно добавить метку в ячейку прототипа, но я получаю сообщение об ошибке "Значение типа 'UITableViewCell' не имеет члена 'movieTitleLabel'.

import UIKit

class FirstTableView: UITableViewController {

let model = MovieModel()

override func viewDidLoad() {
    super.viewDidLoad()
}

override func numberOfSections(in tableView: UITableView) -> Int {
    // #warning Incomplete implementation, return the number of sections
    return 1
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    // #warning Incomplete implementation, return the number of rows
    return model.MovieArray.count
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "movieCells", for: indexPath) as! TableViewCell
    cell.movieTitleLabel?.text = model.movieArray[indexPath.row]

    return cell
}

У меня FirstTableView установлен в качестве делегатаи источник данных в редакторе.

Я создал новый подкласс с именем TableViewCell, связал метку с этим классом. Теперь я в растерянности относительно того, как вывести movieArray на эту метку.

Ответы [ 3 ]

0 голосов
/ 06 декабря 2018

В вашей ячейке-прототипе должен быть указан класс реализации - это должен быть подкласс UITableViewCell.Если вы сделали это, понизьте результат dequeueReusableCell до этого класса.

Вы также должны были подключить выход movieTitleLabel в этом классе к метке в раскадровке.Из приведенного выше видно, что вместо этого вы подключили его к UITableViewController (@IBOutlet слабый var movieTitleLabel: UILabel!).Вы должны удалить это из VC и иметь только в классе UITableViewCell.

0 голосов
/ 06 декабря 2018

Обратите внимание на следующие моменты:

  • Вы создали выход метки с именем 'movieTitleLabel' в ViewController, но эта метка должна быть в классе TableCell.Сделайте правильную ссылку на этот ярлык.
  • После первого пункта, теперь для доступа к этому ярлыку, следуйте этому коду:

Код:

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

    let cell = tableView.dequeueReusableCell(withIdentifier: "YourTableCellIdentifier", for: indexPath) as! YourTableCellClass
        cell.movieTitleLabel.text = "Text" // Set your text here now
     return cell
 }
0 голосов
/ 06 декабря 2018

Вы забыли понизить cell до своего подкласса UITableViewCell, поэтому у вас есть ссылка только на суперкласс UITableVoewCell, а у этого суперкласса нет movieTitleLabel.

. Чтобы исправить это, добавьте as! YourTableViewCellSubclass до конца строки, где вы снимаете с очереди cell

let cell = tableView.dequeueReusableCell(withIdentifier: "movieCells", for: indexPath) as! YourTableViewCellSubclass
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...