【发布时间】:2013-11-19 04:00:03
【问题描述】:
由于我添加了以下代码,每次我的应用打开此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。'
我到底做错了什么?当有 0 行时,我在 tableView:numberOfRowsInSection: 中调用该代码。
【问题讨论】:
-
不是专家,但我也遇到了这个问题,我认为这是因为 UITableView 实现了它自己的 layoutSubviews 版本(或自动布局所需的其他类似方法)。我提出你的问题,因为我也想得到答案:)
-
是的,我可能只需要重新使用框架(我之前所做的),但自动布局会很好用。 ://
-
我为此回到了框架,但是一旦一切都带有自动布局,这真的很不方便......
-
self.view 是一个表格视图,而 self.noArticlesView 是一个应该覆盖显示没有表格单元格的视图?
-
嗯,这一切都在
UITableViewController子类中运行,所以我想self.view是一个tableview。您对self.noArticlesView的看法是正确的。
标签: ios objective-c uitableview autolayout nslayoutconstraint