【发布时间】:2016-11-23 23:55:08
【问题描述】:
如果满足某些条件,我有一个 UITableViewController 将显示一个表视图标题(不是部分标题)。在加载时显示带有或不带有标题视图的控制器都很好。但是,如果我显示标题,然后将其删除,则间距(标题的框架所在的位置)每次都会保留在表格视图的顶部。
在删除表格视图标题时,我尝试了以下所有组合:
[self.tableView beginUpdates];
self.tableView.tableHeaderView = nil;
self.tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectZero];
[self.tableView reloadData];
[self.tableView endUpdates];
其他人遇到过这个吗?
表格视图标题代码:
- (void)updateTableHeaderView
{
if (self.alerts.count && self.isViewLoaded) {
[self.tableView beginUpdates];
UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, CGRectGetWidth(self.tableView.bounds), 40.0f)];
headerView.preservesSuperviewLayoutMargins = YES;
self.tableView.tableHeaderView = headerView;
UIButton *alertButton = [UIButton buttonWithType:UIButtonTypeCustom];
alertButton.tintColor = [UIColor whiteColor];
alertButton.translatesAutoresizingMaskIntoConstraints = NO;
[alertButton setBackgroundImage:[UIImage imageWithColor:alertTintColor] forState:UIControlStateNormal];
[alertButton setBackgroundImage:[UIImage imageWithColor:alertHighlightedTintColor] forState:UIControlStateHighlighted];
[alertButton addTarget:self action:@selector(alertButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
[headerView addSubview:alertButton];
NSDictionary *views = NSDictionaryOfVariableBindings(alertButton);
NSDictionary *metrics = nil;
[NSLayoutConstraint activateConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[alertButton]|" options:0 metrics:metrics views:views]];
[NSLayoutConstraint activateConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[alertButton]|" options:0 metrics:metrics views:views]];
[self.tableView endUpdates];
}
else if (self.isViewLoaded) {
[self.tableView beginUpdates];
self.tableView.tableHeaderView = nil;
[self.tableView endUpdates];
}
}
【问题讨论】:
-
工作正常,我只是试试!!你能解释一下吗?
-
@NSSakly 我根据需要添加了生成(和删除)表格视图标题的代码。问题是,如果我显示标题(当用户有警报时)然后他们查看它们,我想删除标题。但是当我删除它时,它会留下标题所在的空间(即表格顶部和第一部分/行之间的间隙)。
标签: ios uitableview spacing tableheader