Почему я получаю "Должен переводить авторезистирующую маску в ограничения, чтобы иметь _setHostsLayoutEngine: YES" в xcode 6 beta
У меня есть следующий код в быстром UITableViewController, но я получаю "Должен переводить маску автосохранения в ограничения, чтобы иметь _setHostsLayoutEngine: исключение YES во второй строке. Я не изменял никаких настроек в построителе интерфейса (поэтому классы Autolayout и size оба проверяются).
override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell? {
let cell:TodoItemCell = tableView.dequeueReusableCellWithIdentifier("TodoItemCell", forIndexPath: indexPath) as TodoItemCell
let row = indexPath.row
cell.titleLabel.text = self.todoItems![row].title
self.callback!(row)
// Configure the cell...
return cell
}
Что я делаю неправильно?
Ответы
Ответ 1
Не уверен, насколько это помогает, но я вижу ту же ошибку, если попытаюсь поместить ячейку непосредственно в UIView, а не в таблицу. Это отлично работает с Xcode 5, поэтому я подозреваю, что это ошибка с XCode6/ios8. В то же время отлаживаем этот метод и смотрим на ваш tableView. Убедитесь, что на самом деле есть экземпляр ячейки, которую вы пытаетесь восстановить.
Обновление: Подано сообщение об ошибке с Apple, и я могу подтвердить, что это проблема ios8. К сожалению, он все еще присутствует на бета-5, надеюсь, они будут исправлены до финальной версии.
Ответ 2
Это ошибка НЕ, вы просто не можете использовать ячейку UIView
as для представления таблицы, вы должны убедиться, что вид верхнего уровня в файле nib является UITableViewCell
.
Ответ 3
В моем случае я загружал файл nib с UITableViewCell, содержащимся в UIView. После отключения автозапуска в файле nib у меня больше нет исключения.
Ответ 4
Я также столкнулся с этой проблемой, и это было связано с подклассом UITableViewCell
, который используется в иерархии представлений вне UITableView
, как указано в других ответах. В этом случае у меня было ограниченное время, поэтому я не мог переместить функциональность, присутствующую в этом подклассе, в подкласс UIView
. Обходной путь, который я придумал, состоял в том, чтобы просто создать экземпляр UIView
в моей иерархии представлений, где должна была быть ячейка, и переместить иерархию представления экземпляра ячейки в нее и удалить сама ячейку из отображаемой иерархии представлений. До тех пор, пока я сохранил представления, которые я перевел, связанный с различными свойствами экземпляра ячейки, все работает нормально.
Это немного взломанный, но он будет продолжать работать до тех пор, пока не появится время для рефакторинга.
Ответ 5
Невозможно выбрать опцию "Использовать автомасштабирование" из свойств .xib.
- Опубликовать то, что я сделал, поскольку это может помочь другим.
Спасибо.
Ответ 6
ЛЮДИ, ЭТО НЕ БЫЛО. Как никогда не сказано ниже:
"Это НЕ ошибка, вы просто не можете использовать UIView как ячейку для представления таблицы, вы должны убедиться, что представление верхнего уровня в файле nib является UITableViewCell".
Я тестировал его, и он работает.
Вам нужно создать файл Xib и удалить вид верхнего уровня, который у него есть. После этого вы перетаскиваете UITableViewCell в наконечник. Таким образом, этой проблемы не будет.
![Обратите внимание, что объект верхнего уровня в Xib является UITableViewCell, а не UIView]()
Ответ 7
В моем случае я использовал UITableViewCell в UIView для создания пользовательской ячейки
![введите описание изображения здесь]()
то я удалил ячейку из UIView, а затем добавил все содержимое в UIView напрямую и решил мою проблему. ![введите описание изображения здесь]()
Надеюсь, это тебе тоже поможет.
Все лучшее
Ответ 8
В моем случае я скопировал и вложил ячейку, но ограничений не было, что привело к этой ошибке.
если вы копируете ячейку в другой файл xib, убедитесь, что ограничения также скопированы или снова создаются.
Ответ 9
В моем случае родительский элемент UITableViewCell был основным представлением вместо UITableView. В этом случае вам просто нужно поместить ячейку в таблицу.
Я думаю, что это может быть обычной проблемой, если вы перетащите ячейку в представление, не заботясь о правильной иерархии.