为什么我得到“必须翻译自动resize的掩码到约束有_setHostsLayoutEngine:YES”在Xcode 6testing版

我有一个快速的UITableViewController下面的代码,但我得到一个“必须翻译自动resize的掩码到第二行有_setHostsLayoutEngine:YESexception。我没有改变任何设置在界面生成器(所以Autolayout和大小类都检查)。

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 } 

我究竟做错了什么?

不知道这有多大的帮助,但如果我尝试将一个单元格直接放置在UIView而不是表格中,则会看到相同的错误。 这与Xcode 5很好,所以我怀疑这是XCode6 / ios8的错误。 同时,debugging到该方法,看看你的tableView。 确保它实际上有一个正在尝试检索的单元格的实例。

更新:苹果提交了一个错误报告,我可以确认这是一个ios8问题。 不幸的是,它仍然存在beta-5版本,希望在最终发布之前将其修复。

不是一个bug,你只是不能使用UIView作为表格视图的单元格,你必须确保nib文件中的顶层视图是一个UITableViewCell

在我的情况下,我加载了一个包含在UIView中的UITableViewCell的nib文件。 在nib文件中禁用autolayout之后,我没有再次得到exception。

我也遇到了这个问题,这是由于UITableViewCell子类在UITableView之外的视图层次结构中使用,如其他答案中所述。 在这种情况下,我的时间有限,所以我无法将该子类中的function移到UIView子类中。 我想到的解决方法是在我的视图层次结构中创build一个UIView实例,该视图层次结构中的单元格应该是这样的,并将单元实例的视图层次结构移植到实例中,并从显示的视图层次结构中移除单元格本身。 只要我保持我移动连接到单元格实例的各种属性的意见,一切工作正常。

这有点怪异,但它会保持运行,直到重构的时间可用。

从.xib的属性中取消select“使用自动布局”选项解决了我的问题。 – 发布我所做的,这可能会帮助其他人。

谢谢。

人,这不是一个错误。 正如以下从未说过的:

“这不是bug,你只是不能使用UIView作为表格视图的单元格,你必须确保nib文件中的顶层视图是一个UITableViewCell。

我已经testing过它,它的工作原理。

您需要创buildXib文件并删除它所具有的顶级视图。 之后,将一个UITableViewCell拖放到笔尖中。 这样,这个问题就不会发生了。

请注意,Xib中的顶级对象是UITableViewCell而不是UIView

在我的情况下,我已经复制并粘贴了单元格,但缺less导致此错误的约束。 如果要将单元格复制到另一个xib文件中,请确保约束也被复制或再次创build

在我的情况下,我在UIView中使用UITableViewCell来创build自定义单元格 在这里输入图像说明

然后我从UIView中删除单元格,然后直接添加UIView中的所有内容,并解决了我的问题。 在这里输入图像说明

希望它也能帮助你。 祝一切顺利

在我的情况下,UITableViewCell父母是主视图,而不是UITableView。 在这种情况下,你只需要把单元格放在tableview中。

我认为这可能是一个共同的问题,如果你把单元格拖入视图,而没有照顾正确的层次结构。