重新排序UITableViewCell

时间:2015-11-11 15:15:15

标签: ios objective-c uitableview nslayoutconstraint

我在故事板中设置了一个简单的单元格, enter image description here

Thers'一个图像视图和一个标签,我设置了一些约束,它是imageView的前导,顶部和底部空间到contentview,以及imageView的宽度和高度,以及标签与imageview的水平间距和垂直居中的imageview。 enter image description here 当我运行应用程序时,它显示正确,没有错误发生。 enter image description here

rightBarButtonItem是系统编辑按钮。当我重新排序单元格时,发生约束错误,我不知道如何解决它。

2015-11-11 23:08:05.681 HiPDA[10108:2305919] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. 
Try this: 
    (1) look at each constraint and try to figure out which you don't expect; 
    (2) find the code that added the unwanted constraint or constraints and fix it. 
(
"<NSLayoutConstraint:0x7fce60ce6cf0 V:[UIImageView:0x7fce60cac370(40)]>",
"<NSLayoutConstraint:0x7fce60ce6f10 UITableViewCellContentView:0x7fce60ca0610.topMargin == UIImageView:0x7fce60cac370.top>",
"<NSLayoutConstraint:0x7fce60ce7020 UITableViewCellContentView:0x7fce60ca0610.bottomMargin == UIImageView:0x7fce60cac370.bottom - 0.5>",
"<NSLayoutConstraint:0x7fce60c03a70 'UIView-Encapsulated-Layout-Height' V:[UITableViewCellContentView:0x7fce60ca0610(56)]>"
)

Will attempt to recover by breaking constraint 

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.

我很困惑,当它显示,scrlled和删除,没有错误发生,但当我重新排序单元格,发生约束错误,我不知道如何解决它。谢谢。

我上传了该项目,您可以在这里下载download link

有两个导航控制器,更改它们之间的init控制器,当tableviewcell只包含标签时没有发生错误,但是当tableviewcell包含imageview错误时重新排序单元格。

2 个答案:

答案 0 :(得分:0)

看看你的约束,冲突是那个

图像视图高度设置为40,它固定在单元格的顶部和底部,而单元格高度为56.您希望imageview 40或56有多大?

您可以通过删除顶部和底部约束来解决此问题,并且只需垂直于单元格约束。即ImageView.centerY = centerY

这是图像视图中项目的修改约束 enter image description here

答案 1 :(得分:0)

你给了imageView两组约束来确定它的高度,一个是top&amp;&amp;底部空间,另一个是高度。

当它们相互冲突时,您将收到此警报。将其中一个更改为可选将解决问题。

在这种情况下,您可以从&#34; =&#34;更改imageView的高度限制。到&#34;&gt; =&#34;或更低的高度约束优先级为999。