当我扩展我的UIViewController并调用扩展的ViewController时,我得到:由于未捕获的异常“ NSInvalidArgumentException”而终止应用程序,原因:“(null)的NSLayoutConstraint:约束必须包含第一个布局项”错误。 / p>
CGSize size = CGSizeMake(142, 200);
[self.scrollView.subviews enumerateObjectsUsingBlock:^(UIView* subView, NSUInteger i, BOOL *stop) {
subView.translatesAutoresizingMaskIntoConstraints = NO;
[ViewHelper addWidthConstraint:subView width:size.width];
[ViewHelper addHeightConstraint:subView height:size.height];
if (i < self.scrollView.subviews.count - 1) {
[ViewHelper addHorizontalConstraint:self.scrollView
previouseView:subView
nextView:(UIView*)self.scrollView.subviews[i + 1]
spacer:8];
}
[ViewHelper addEdgeConstraint:NSLayoutAttributeTop
superview:self.scrollView
subview:subView];
[ViewHelper addEdgeConstraint:NSLayoutAttributeBottom
superview:self.scrollView
subview:subView];
}];
[ViewHelper addEdgeConstraint:NSLayoutAttributeLeft
superview:self.scrollView
subview:self.scrollView.subviews.firstObject];
[ViewHelper addEdgeConstraint:NSLayoutAttributeRight
superview:self.scrollView
subview:self.scrollView.subviews.lastObject];
[ViewHelper addHeightConstraint:self.scrollView height:size.height];
在此行崩溃:
[ViewHelper addEdgeConstraint:NSLayoutAttributeLeft
superview:self.scrollView
subview:self.scrollView.subviews.firstObject];
答案 0 :(得分:1)
该错误表明您正在尝试使用nil视图添加约束。在尝试向其添加约束之前,应防止self.scrollView.subviews.firstObject / lastObject为nil(通过确保scrollView具有任何子视图)。这是一个示例:
// make sure that the scrollView has some subviews before attempting to add layout constraints using the subviews
if ([self.scrollView.subviews count] > 0) {
[ViewHelper addEdgeConstraint:NSLayoutAttributeLeft
superview:self.scrollView
subview:self.scrollView.subviews.firstObject];
[ViewHelper addEdgeConstraint:NSLayoutAttributeRight
superview:self.scrollView
subview:self.scrollView.subviews.lastObject];
}