为什么每次我的应用程序现在启动时,我都会得到一个“在执行-layoutSubview之后仍然需要的自动布局”错误?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (32)

由于我添加了下面的代码,每次我的应用程序打开UITableViewController它都会崩溃:

 self.noArticlesView = [[UIView alloc] init];
 self.noArticlesView.translatesAutoresizingMaskIntoConstraints = NO;
 self.noArticlesView.backgroundColor = [UIColor colorWithRed:0.961 green:0.961 blue:0.961 alpha:1];

 [self.view addSubview:self.noArticlesView];

 [self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.noArticlesView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:1.0 constant:0.0]];
 [self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.noArticlesView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeBottom multiplier:1.0 constant:0.0]];
 [self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.noArticlesView attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeft multiplier:1.0 constant:0.0]];
 [self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.noArticlesView attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeRight multiplier:1.0 constant:0.0]];    

它给了我这个错误:

*因未捕获异常'NSInternalInconsistencyException'而终止应用程序,原因:'在执行-layoutSubviews之后仍然需要自动布局。UITableView的-layoutSubviews实现需要调用super。'

我究竟做错了什么?我在tableView:numberOfRowsInSection:有0行时调用该代码。

提问于
用户回答回答于

也有同样的问题。将视图添加到Self.tableView并使用约束。不要通过addSubview将视图添加到表视图中:而是将其添加为页眉、页脚或单元格。

用户回答回答于

我是UIScrollView的子类,并在iOS 7(但不是8)上收到相同的错误消息。

我以类似于以下的方式重写layoutSubviews:

- (void)layoutSubviews {
    [super layoutSubviews];
    // code to scroll the view
}

我通过将调用移至super的layoutSubviews解决了该问题,成为该方法中的最后一件事:

- (void)layoutSubviews {
    // code to scroll the view
    [super layoutSubviews];
}

扫码关注云+社区