UITableViewController
을로드하는 컨테이너가 있습니다. 처음에는 테이블에 데이터가 없으므로 빈 뷰를 표시합니다.iOS 7에서만 UITableView에 하위보기를 추가 할 때 "자동 레이아웃이 여전히 필요합니다"오류가 발생했습니다.
emptyView = new UIView();
emptyView.BackgroundColor = UIColor.Gray;
// works on iOS 8 but has to be removed on iOS 7
emptyView.TranslatesAutoresizingMaskIntoConstraints = false;
var views = NSDictionary.FromObjectsAndKeys(
new object[] { emptyView },
new object[] { "emptyView" }
);
View.AddSubview (emptyView);
this.TableView.SeparatorStyle = UITableViewCellSeparatorStyle.None;
View.AddConstraints(NSLayoutConstraint.FromVisualFormat ("V:|-0-[emptyView]-0-|", NSLayoutFormatOptions.DirectionLeadingToTrailing, null, views));
View.AddConstraints(NSLayoutConstraint.FromVisualFormat ("H:|-0-[emptyView]-0-|", NSLayoutFormatOptions.DirectionLeadingToTrailing, null, views));
문제는 지금은 자동 크기 마스크를 해제 라인 : 이것은 내가 ViewDidLoad
에서 그것을 할 방법이다. 아이폰 OS 7.1에 나는 다음과 같은 오류가 (장치와 시뮬레이터) :
NSInternalInconsistencyException Reason: Auto Layout still required after executing -layoutSubviews. UITableView's implementation of -layoutSubviews needs to call super.
나는 TranslatesAutoresizingMaskIntoConstraints
모든 것이 잘 작동 주석합니다. 동일한 코드가 iOS 8에서 수정하지 않고 실행됩니다. 전체보기가 아닌 내보기에서 자동 크기 조정 마스크 만 제거합니다. UITableView
. 보기를 테이블 머리글에 추가하면 동일한 문제가 발생합니다.
자동 레이아웃의 문제를 어떻게 해결해야합니까? 코드가 C#에 있지만 개념이 동일하기 때문에 Objective C 세계의 솔루션을 항상 제공 할 수 있습니다.