根据自动调整掩码,UITableViewCellContentView宽度始终为零(仅限iOS 7)

时间:2014-11-21 08:39:45

标签: uitableview ios7 autolayout uipopovercontroller autoresizingmask

我正在使用动态单元格高度的自动布局方法,如Using Auto Layout in UITableView for dynamic cell layouts & variable row heights中所述。这项工作到目前为止。现在我在UITableView UIPopoverController中展示我的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. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) ( "<NSLayoutConstraint:0x7a706fa0 H:|-(8)-[UILabel:0x7a707760] (Names: '|':UITableViewCellContentView:0x7a707ba0 )>", "<NSLayoutConstraint:0x7a707060 H:[UILabel:0x7a707760]-(8)-| (Names: '|':UITableViewCellContentView:0x7a707ba0 )>", "<NSAutoresizingMaskLayoutConstraint:0x7a706970 h=--& v=--& H:[UITableViewCellContentView:0x7a707ba0(0)]>" ) Will attempt to recover by breaking constraint <NSLayoutConstraint:0x7a707060 H:[UILabel:0x7a707760]-(8)-| (Names: '|':UITableViewCellContentView:0x7a707ba0 )> Break on objc_exception_throw to catch this in the debugger. The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful. 。现在到了有趣的部分:我将从不同的视图控制器呈现这个popover。在第一个视图控制器上,一切都按预期工作。如果我切换到第二个视图控制器,它也提供此弹出窗口,弹出窗口是完全空的(即使没有分隔线!)我得到以下错误:

"<NSAutoresizingMaskLayoutConstraint:0x7a706970 h=--& v=--& H:[UITableViewCellContentView:0x7a707ba0(0)]>"

现在我们注意这一部分:

UITableViewCellContentView

根据自动调整掩码,它表示{{1}}的宽度为零。但是之前相同的代码在另一个视图控制器上工作。并且popover应该独立于我在视图控制器中的设置。我试图在另一个项目中复制行为,但我不能。这也仅出现在iOS 7上。在iOS 8上,一切正常。我也试图摆脱自动布局,然后显示内容(但不是我想要的方式)。我能想出的唯一选择是回到spring和struts ...如果你想我可以在C#中提供我的代码,但我把它留下来让问题更具可读性。

这可能是什么原因?有没有人经历过这样的事情?

1 个答案:

答案 0 :(得分:2)

在搜索了一天之后,这是一个默认的错误。因为我之前没有使用控制器,所以下面的代码行仍然存在:

myViewControllerInPopup.View.TranslatesAutoresizingMaskIntoConstraints = false;

我在视图控制器上实现了弹出窗口。删除此行,一切都按预期工作。