Подтвердить что ты не робот

Невозможно присвоить значение типа 'UITableViewCell' в '(AppName). (CustomCellName)'

В настоящее время я пытаюсь создать пользовательскую ячейку таблицы, используя xCode 6.3 swift 1.2. По какой-то причине в методе cellforRowAtIndexPath я просто не могу настроить свою переменную ячейки. Код будет скомпилирован, но тогда, когда эта строка кода ударит:

    var cell:MessageCell = tableView.dequeueReusableCellWithIdentifier("messageCell") as! MessageCell

Я получаю эту ошибку: не удалось передать значение типа "UITableViewCell" (0x1112f5a18) в "CampusExchange.MessageCell" (0x10e8318f0).

Здесь мой полный метод: (Я использую Parse, если вам интересно, как я устанавливаю сообщение)

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    var cell:MessageCell = tableView.dequeueReusableCellWithIdentifier("messageCell") as! MessageCell

    let message = messagesArray[indexPath.row]["Message"] as? String
    cell.messageOutlet.text = message
    return cell
}

спасибо за любую помощь, которая у вас может быть. Я просто не могу заставить это работать.

4b9b3361

Ответ 1

Есть несколько вещей, которые вы можете проверить для этого:

  • Посмотрите, связана ли ваша таблица с вашим классом, обычно @IBOutlet weak var tableView: UITableView!

  • Зарегистрировать собственную ячейку представления таблицы: self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell") Обратите внимание, что вы используете "UITableViewCell" и идентификатор "cell", даже если ваша пользовательская ячейка имеет разные классы и идентификаторы.

  • Удалите свою ячейку в cellForRowAtIndexPath: let cell: MessageCell = self.tableView.dequeueReusableCellWithIdentifier("messageCell") as! MessageCell Теперь вы используете правильный идентификатор ячейки.

Ответ 2

Зарегистрируйте свой CustomCell в методе viewDidLoad():

self.tableView.register(CustomCell.self, forCellReuseIdentifier: "Cell")

Ответ 3

В viewDidLoad()

// register custom table view cell from nib
self.tableView.registerNib(UINib(nibName: "MessageCell", bundle: nil), forCellReuseIdentifier: "messageCell")

Ответ 4

У меня было такое же сообщение об ошибке. Но для меня проблема заключалась в том, что я не задал класс моей пользовательской ячейки в построителе интерфейса.

Ответ 5

Во-первых, я предлагаю вам воссоздать свой класс ячеек, используя CocoaClass. У меня была такая же ошибка: я создал CollectionViewCell, и когда я узнал свою ошибку, я решил просто переименовать родительский класс. Однако компилятор не заметил никакой ошибки, у меня была эта ошибка во время сборки.

Ответ 6

Синтаксис Swift 3:

self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell")

Ответ 7

У меня была такая же ошибка. Как утверждает obo2O в своем комментарии, его решение сработало для меня:

  • Перейдите к построителю интерфейса
  • Нажмите соответствующую раскладку
  • Нажмите соответствующую ячейку в пределах таблицы.
  • На панели "Утилиты" (справа) щелкните значок "Показать идентификатор"
  • В разделе "Пользовательский класс" → "Класс" установите класс на что-нибудь еще и запустите приложение. Сбой приложения, поскольку классX не может использовать классY
  • В разделе "Пользовательский класс" → "Класс" установите класс в правильный класс и запустите его.

Ответ 8

Восстановите свой класс с помощью cocoaClass и выберите UItableViewCell

У меня была та же проблема, что и для меня.

Ответ 9

У меня была такая же проблема, я устанавливал пользовательский класс для ячейки, но забыл установить модуль введите описание изображения здесь

после выбора модуля, подобного этому, он работал

введите описание изображения здесь