2014-10-20 1 views
3

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 세계의 솔루션을 항상 제공 할 수 있습니다.

답변

0

나는 자동 레이아웃에서 벗어나 내 emptyView에 대해 더 이상 사용하지 않는다.

emptyView = new UIView (new RectangleF(0, 0, this.View.Bounds.Size.Width, this.View.Bounds.Size.Height)); 
emptyView.BackgroundColor = UIColor.White; 
emptyView.AutoresizingMask = UIViewAutoresizing.All; 

는 지금은 작동하지만, 자동 레이아웃을 사용하지 않는 것입니다 나도 몰라. 아마도 내가 받아 들일 수있는 더 나은 대답을 제시 할 수있을 것입니다.

관련 문제