更改UITableView节标题的默认滚动行为

我有两个部分的UITableView。这是一个简单的表格视图。我正在使用viewForHeaderInSection为这些标题创建自定义视图。到目前为止,一切都很好。


默认的滚动行为是,遇到一个节时,节标题保持锚定在导航栏下方,直到下一个节滚动到视图中为止。


我的问题是:我可以更改默认行为,以使节标题不停留在顶部,而是在导航栏下滚动浏览节的其余部分吗?


我缺少明显的东西吗?


谢谢。


aluckdog
浏览 465回答 3
3回答

大话西游666

我解决此问题的方法是contentOffset根据(extends )contentInset中的来调整,如下所示:UITableViewControllerDelegateUIScrollViewDelegate- (void)scrollViewDidScroll:(UIScrollView *)scrollView {&nbsp; &nbsp; &nbsp; &nbsp;CGFloat sectionHeaderHeight = 40;&nbsp; &nbsp;if (scrollView.contentOffset.y<=sectionHeaderHeight&&scrollView.contentOffset.y>=0) {&nbsp; &nbsp; &nbsp; &nbsp;scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0);&nbsp; &nbsp;} else if (scrollView.contentOffset.y>=sectionHeaderHeight) {&nbsp; &nbsp; &nbsp; &nbsp;scrollView.contentInset = UIEdgeInsetsMake(-sectionHeaderHeight, 0, 0, 0);&nbsp; &nbsp;}}唯一的问题是,滚动回顶部时,它会松动一些反弹。{注意:“ 40”应为您的第0部分标题的确切高度。如果使用的数字大于第0部分标题的高度,您会发现手指感觉受到了影响(尝试使用“ 1000”,并且您会看到顶部的弹跳行为很奇怪)。如果数字与您的第0部分标题高度匹配,则手指感觉似乎是完美的或接近完美。}

郎朗坤

如果是我这样做,我将利用一个事实,即Plain风格的UITableViews具有粘性标头,而Grouped风格的UITableViews没有标头。我可能至少会尝试使用自定义表格单元格来模拟分组表格中普通单元格的外观。我实际上没有尝试过,因此可能无法正常工作,但这就是我建议的做法。

慕田峪4524236

我知道来晚了,但是我找到了最终的解决方案!您要执行的操作是,如果有10个节,则让dataSource返回20。节标题使用偶数,节内容使用奇数。像这样的东西- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {&nbsp; &nbsp; if (section%2 == 0) {&nbsp; &nbsp; &nbsp; &nbsp; return 0;&nbsp; &nbsp; }else {&nbsp; &nbsp; &nbsp; &nbsp; return 5;&nbsp; &nbsp; }}-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {&nbsp; &nbsp; if (section%2 == 0) {&nbsp; &nbsp; &nbsp; &nbsp; return [NSString stringWithFormat:@"%i", section+1];&nbsp; &nbsp; }else {&nbsp; &nbsp; &nbsp; &nbsp; return nil;&nbsp; &nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

iOS