为什么我在xcode 6 beta中得到"必须将自动调整掩码转换为约束以使_setHostsLayoutEngine:YES"

Emw*_*wee 40 swift xcode6

我在swift UITableViewController中有以下代码,但我得到一个"必须将自动调整掩码转换为约束,以便在第二行有_setHostsLayoutEngine:YES异常.我没有更改界面构建器中的任何设置(因此都检查了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
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

pbu*_*eit 54

不知道这有多大帮助,但如果我尝试将单元格直接放在UIView而不是表格中,我会看到同样的错误.这对Xcode 5很好用,所以我怀疑它是XCode6/ios8的一个bug.同时,调试到该方法并查看你的tableView.确保它实际上有您要检索的单元格的实例.

更新:向Apple提交了一份错误报告,我可以确认这是一个ios8问题.不幸的是,它仍然存在于beta-5中,希望它们能在最终版本发布之前修复它.

  • 这在Xcode 6 GM中没有修复.我的问题是xib错误地在视图层次结构中间有一个自定义类从UITableViewCell降序的视图. (4认同)
  • 这仍然是Xcode 6.1.1和iOS 8.1中的一个问题 (3认同)
  • 在Xcode 6.3和iOS 8.3中仍然存在问题.这确实是我的问题 - 我在UIView中直接使用了UITableViewCell(为了方便使用Right Detail样式).我用两个标签替换它. (2认同)

nee*_*vek 31

不是一个错误,你根本无法使用UIViewas作为表格视图的单元格,你必须确保nib文件中的顶级视图是一个UITableViewCell.

  • 很多评论都提到了禁用自动布局.在大小等级和多个屏幕分辨率的时代,这不应被视为有效选项.+1到@neevek以获得正确的层次结构建议. (2认同)

otu*_*web 25

我遇到这个问题是因为我将单元格中Layout的属性更改为。将其切换回以解决问题。 ContentViewInferred (Constraints)Autoresizing Mask在此输入图像描述

在 iOS 15 中,如果您将此设置设置错误,您的应用程序将会崩溃

  • 我在升级到 Xcode 13 / iOS 15 时开始遇到此崩溃,这修复了它! (2认同)

小智 13

在我的例子中,我正在加载一个包含在UIView中的UITableViewCell的nib文件.在nib文件中禁用自动布局后,我没有再次获得异常.


Cha*_* A. 8

我也遇到了这个问题,这是因为在其他答案中提到UITableViewCell的视图层次结构中使用了一个子类UITableView.在这种情况下,我的时间有限,所以我无法将该子类中的功能移动到UIView子类中.我想到的解决方法是UIView在视图层次结构中创建一个实例,该实例应该是单元格,并将单元实例的视图层次结构移植到其中,并从显示的视图层次结构中删除单元格本身.只要我保持视图,我将连接到单元实例的各种属性,一切都保持正常.

它有点hacky,但它会保持运行,直到重构的时间可用.


Tre*_*v14 5

iOS 15 / Xcode 13

.xib当文件具有嵌套在 UITableView 中的UITableViewCell时,发生了此崩溃。该单元格位于堆栈视图内 - 在某一时刻,它或多或少是一个占位符,因此一些界面警告将会消失。我删除了孤立表视图单元格并且不再发生崩溃。