CustomTableCellView的实现-layoutSubviews的需要调用超,NSInte

2019-07-04 06:35发布

在为厦门国际银行的tableView自定义单元格的autoLayout使用,我收到以下错误。

当在运行的iOS 6模拟器 CustomCells的实现-layoutSubviews的需要调用超

Assertion failure in 

-[CustomCells layoutSublayersOfLayer:], /SourceCache/UIKit_Sim/UIKit-2372/UIView
     *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Auto Layout still required after executing -layoutSubviews. CustomCells's implementation of -layoutSubviews needs to call super.'
    *** First throw call stack:

当iOS 5的模拟器中运行

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'The NIB data is invalid.'
*** First throw call stack:

温度修正:

如果我在自定义单元格禁用的autoLayout这是工作的罚款。 但定向处理不是在这种情况下的罚款。 请帮忙。

Answer 1:

layoutSubviews needs to call super

可以通过把一切都在您的自定义的tableview细胞在容器视图中摸索,在iOS6的。 即创建一个新的观点,以填补细胞然后将控制等内部的。 另外,请确保您设置:

[theContainerView setTranslatesAutoresizingMaskIntoConstraints:NO]; 

用于容器和子视图



Answer 2:

的iOS 5.1及更早版本不符合自动版式兼容。 这只是对iOS 6.0以上版本。

假设你正在使用的故事板,如果你想使用自动版式,但仍保持与iOS 6.0以前的版本兼容,你需要创建两个目标:一个是iOS 6的,另一个是iOS 5的(或更早)。 对于每一个,设置一个独立的故事板,一个其中自动版式被使能(针对iOS 6),和一个其中它不是(iOS设备5)。

这里有一个StackOverflow的线程的最佳实践与自动版式和向后兼容与iOS 5: 在iOS 6中启用自动布局,同时保持与iOS 5的向后兼容 。

根据我的经验,这是不值得,如果你想向后兼容使用自动版式的努力。 如果您使用的故事板,这是一个维护头痛有2个目标和2个情节串连图板同步。 如果你不使用故事板,你需要为iOS 5和iOS 6不同的代码,这将需要更长的时间来测试和更新。



文章来源: CustomTableCellView's implementation of -layoutSubviews needs to call super , NSInternalInconsistencyException