Using Auto Layout in UITableView for dynamic cell layouts & variable row heights에 설명 된 동적 셀 높이의 자동 레이아웃 방식을 사용하고 있습니다. 이것은 지금까지 작동합니다. 지금은 UIPopoverController
에 내 UITableView
을 선물하고 있습니다. 이제 흥미로운 부분을 살펴 보겠습니다. 다른 뷰 컨트롤러에서이 팝 오버를 제공합니다. 첫 번째보기 컨트롤러에서는 모든 것이 예상대로 작동합니다. 나는 또한이 팝 오버를 제공하는 두 번째 뷰 컨트롤러로 전환하는 경우, 팝 오버는 (! 심지어 구분선없이) 완전히 비어 있고 나는 다음과 같은 오류가 발생합니다 :자동 크기 조정 마스크에 따라 UITableViewCellContentView 너비가 항상 0입니다.
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.
이제 우리는이 부분에주의 :
"<NSAutoresizingMaskLayoutConstraint:0x7a706970 h=--& v=--& H:[UITableViewCellContentView:0x7a707ba0(0)]>"
자동 조절 마스크에 따라 UITableViewCellContentView
의 너비가 0이라고합니다. 하지만 전에 다른 뷰 컨트롤러에서 같은 코드가 작동합니다. 그리고 popover는 뷰 컨트롤러의 내 설정과 독립적이어야합니다. 다른 프로젝트에서 동작을 복제하려고했지만 할 수 없습니다. 이것은 또한 iOS 7에서만 나타납니다. iOS 8에서는 모든 것이 잘 작동합니다. 나는 또한 자동 레이아웃에서 벗어나려고 노력했다. 그런 다음 내용이 표시된다 (그러나 원하는 방식으로 표시되지는 않는다). 내가 할 수있는 유일한 옵션은 봄과 스트럿으로 돌아가는 것입니다 ... 원한다면 C#으로 제 코드를 제공 할 수 있지만 질문을 더 읽기 쉽게하기 위해 생략했습니다.
왜 이런 이유가있을 수 있습니까? 이런 경험을 한 사람이 있습니까?