好的,所以这是我的困境自动取款机。
我有一个带有 UITableView (tableView) 和 UIView (viewForTableHeader) 的故事板,其中包含几个其他对象,如 UIImag、标签等。
以编程方式,我通过执行以下操作将 UIView 设置为 UITableView 的标题:
[self.tableView setTableHeaderView:self.viewForTableHeader];
这在不使用自动布局时非常有效。
但是使用自动布局,应用程序崩溃并给我留下:
由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“执行 -layoutSubviews 后仍需要自动布局。UITableView 的 -layoutSubviews 实现需要调用 super.'
所以在 viewDidLoad 我试图将约束设置viewForTableHeader
为:
NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:self.viewForTableHeader attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.tableView attribute:NSLayoutAttributeTop multiplier:0 constant:0];
[self.view addConstraint:constraint];
constraint = [NSLayoutConstraint constraintWithItem:self.viewForTableHeader attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.tableView attribute:NSLayoutAttributeLeft multiplier:0 constant:0];
[self.view addConstraint:constraint];
我也试过:
- (void)layoutSublayersOfLayer:(CALayer *)layer {
[super layoutSublayersOfLayer:self.tableView.layer];
并做了同样的事情试图在这里设置约束
}
viewForTableHeader
把它放在一个 nib 文件中会更好吗?我确实对此有点不满意,所以任何帮助或指示都会有所帮助。