IOS:隐藏/重新加载 tableView 标头
Posted
技术标签:
【中文标题】IOS:隐藏/重新加载 tableView 标头【英文标题】:IOS: Hide/Reload tableView header 【发布时间】:2015-08-24 19:30:05 【问题描述】:我在故事板中使用自动布局为 tableview(!不是该部分)创建了标题。
我希望能够显示/隐藏它。
我该怎么做?
我试过这段代码:
self.tableView.tableHeaderView.hidden = !flag;
CGRect frame = self.tableView.tableHeaderView.frame;
frame.size.height = flag? k_HEIGHT_TableViewHeader : 0;
self.tableView.tableHeaderView.frame = frame;
它有效,但它给了我很多自动布局错误。
我也可以将其设置为零。如果是这样,我如何从情节提要中加载标题?
【问题讨论】:
【参考方案1】:当您决定隐藏/显示时,您是否尝试过使用 [tableview reloadData]?
【讨论】:
是的,它隐藏/显示它,但如果它隐藏了框架并没有改变,所以我有空的空间而不是我的标题 此时您需要执行代码将您的表格视图移回顶部。这可以通过制作一个 IBOutlet NSLayoutConstraint *topConstraint 并将其连接到您的“顶部空间到 Superview”约束来完成。隐藏时将 topConstraint 更新为 0,显示时更新为 0(如 30 像素)。【参考方案2】:因为您使用自动布局创建它,而不是更改框架,所以您应该将 tableHeaderView
上的高度约束从情节提要链接到您的类。然后,当您想要折叠它时,设置constraint.constant = 0
并通过设置constraint.constant = k_HEIGHT_TableViewHeader
再次展开它。之后您还需要在视图上调用layoutIfNeeded
。
也可以通过将layoutIfNeeded
包装在 UIView 动画块中轻松地为这种更改设置动画
[UIView animateWithDuration:0.5 animations:^[self.view layoutIfNeeded];];
Auto Layout Animation Reference
【讨论】:
可以,但是不能在storyboard中给tableView的header添加高度约束以上是关于IOS:隐藏/重新加载 tableView 标头的主要内容,如果未能解决你的问题,请参考以下文章
如果当前视图是 tableViewController,iOS TableView 不会重新加载
iOS 为啥我的应用程序在重新启动之前不会将数据加载到 tableview 中?