带有 UITableViewCell 和 UITextField 的 iOS 8 自动布局

Posted

技术标签:

【中文标题】带有 UITableViewCell 和 UITextField 的 iOS 8 自动布局【英文标题】:iOS 8 Auto Layout with UITableViewCell and UITextField 【发布时间】:2015-02-11 06:26:29 【问题描述】:

我的项目在自定义 UITableViewCell 中存在 ios8 兼容性问题。我收到以下错误

Assertion failure in -[EditableTextCell _setHostsLayoutEngine:], /SourceCache/UIKit/UIKit-3318.16.25/NSLayoutConstraint_UIKitAdditions.m:2760
2015-02-10 23:23:16.959 App_name[2883:507063] *** Terminating app due to uncaught exception
'NSInternalInconsistencyException', reason: 'Must translate autoresizing mask
into constraints to have _setHostsLayoutEngine:YES.'

我见过类似的问题,例如 UITableViewCell throwing exception 和其他问题,例如 UITableview Cell exception - 'Must translate autoresizing mask into constraints to have _setHostsLayoutEngine:YES,但没有一个有用。我已经删除了约束,但仍然出现错误。

我正在使用自动布局。上面错误中提到的 EditableTextCell 是带有UITextFieldDelegate 的自定义UITableViewCell,我在许多xib 文件中使用它。我的视图层次结构如下:-

    View_Portrait

    Portrait_TopContentView Editable Text Cell -- 这是自定义类 EditableTextCell 内容视图 表格视图单元格 内容视图 按钮 Portrait_TableContainerView 纵向_标签栏 UITabBarItem1 UITabBarItem2

    横向视图的类似结构。

我非常感谢任何帮助。如果我能提供更多信息,请告诉我。

更新:我已经尝试了一些解决方案,但这仍然不适合我。在我为 EditableTextCell setFrame: 之前,我输入了以下代码行:

    [self.pSearchEditCell setTranslatesAutoresizingMaskIntoConstraints:YES];
    [self.pSearchEditCell.textField setFrame:textFieldFrame]; 
    [self.pSearchEditCell.textField layoutIfNeeded];

其中pSearchEditCellUITableViewCell 的自定义表格单元格,具有UITextField。但这种方法对我不起作用。

【问题讨论】:

您是否对代码中以编程方式添加的每个 UIElement 使用了这一行 translatesAutoresizingMaskIntoConstraints = NO。如果您还没有尝试过一次。 不,我没用过这条线。我今天会尝试一下,如果这对我有用,请告诉您。 嗨@Karish对此有什么解决方案吗?我不断收到此错误,但无法找到一个好的解决方案 嗨@HongZhou,没有优雅的解决方案。自定义表格单元格必须是故事板的一部分。 【参考方案1】:

有同样的问题。最终我只是在UitableView 中使用了单元格,如果您使用UITableView 之外的单元格,iOS8 似乎不太喜欢它。

【讨论】:

我今天会试试这个。谢谢。 您设置了哪些约束条件,单元格和表格的约束条件相同。我不知道该怎么做,你能给我更多的信息吗?谢谢。 对不起,我不明白你想问什么。单元格的约束在自定义单元格类中设置。并且 uitableview 有自己的约束 在我的故事板中没有嵌套表格单元是我收到此错误时的问题。

以上是关于带有 UITableViewCell 和 UITextField 的 iOS 8 自动布局的主要内容,如果未能解决你的问题,请参考以下文章

带有 UITableViewCell 和 UITextField 的 iOS 8 自动布局

是否有带有标签和文本字段的可重用 UITableViewCell?

带有 xib 文件和自定义构造函数的自定义 UITableViewCell

在第二次搜索时带有自定义 UITableViewCell 的 UISearchDisplayController 失去 UITableViewCell 连接

带有 UITextView 的 UITableViewCell 中的自动布局

在 ViewController 中使用带有外部 DataSource 和 UITableView 的自定义 UITableViewCell