Невозможно присвоить значение типа '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
}
спасибо за любую помощь, которая у вас может быть. Я просто не могу заставить это работать.
Ответы
Ответ 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
У меня была такая же проблема, я устанавливал пользовательский класс для ячейки, но забыл установить модуль
![введите описание изображения здесь]()
после выбора модуля, подобного этому, он работал
![введите описание изображения здесь]()