ios - UiTableView 标题没有消失
<p><p>我有一个 UITableView 配置为普通样式,因此我可以将标题 View 卡在表格顶部,直到另一个标题将其拉走。</p>
<p>问题是:如果我有一个标题卡在屏幕顶部,并且我以编程方式滚动到表格的另一部分(该标题根本不应该出现的地方),那么 UIView 将不会被关闭。 IE。如果我再次滚动到表格的该部分,该标题的幽灵将在表格的该部分可见。</p>
<p> <img src="/image/E8XyW.jpg" alt="See screenshot"/> </p>
<p>我已经实现了方法 <code>- (void)tableView:(UITableView *)tableView didEndDisplayingHeaderView:(nonnull UIView *)view forSection:(NSInteger)section</code> 来了解发生了什么。我发现如果我手动滚动直到一个标题被拉离屏幕,这个委托(delegate)就会被调用。但如果我以编程方式滚动,则不会调用委托(delegate)。</p>
<p>顺便说一句,我尝试使用两种不同的方法以编程方式滚动,问题是一样的。</p>
<pre><code>- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated;
- (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated;
</code></pre>
<p>我可以想象的一种解决方法是实现 <code>- (void)scrollViewDidScroll:(UIScrollView *)scrollView;</code>,过滤可见屏幕之外的所有标题 View ,并将它们从 superView 中删除。我可能可以让它工作,但我想知道是否有其他更好的解决方案。</p>
<p> 如果我调用 <code>- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated;</code> 且动画 = YES,则该错误不会发生。我可以使用这个解决方案,但在某些情况下我真的希望在没有动画的情况下滚动。</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>不完全确定我完全理解您的问题,但是一旦您以编程方式滚动离开该区域/部分并且 < strong>然后</strong>返回。</p>
<p>我不确定您如何填充标题 View 内容,但我有 <em>几个</em> 应用程序运行 <code>UITableView</code> 的多个部分标题需要更新滚动/内容偏移量没有问题,<strong>只要</strong>你用这个委托(delegate)“绘制”你的标题:</p>
<pre><code>- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
// Per section, simply return the appropriate header view
...
NSString *someIdentifier = ;
UITableViewHeaderFooterView *myHeaderView = ;
if (!myHeaderView) {
// No header view found with that ID. Make a new one
}
...
return myHeaderViewForSection;
}
</code></pre>
<p>这样,无论您是手指滚动<strong>还是</strong>以编程方式设置您喜欢的内容偏移量,您的表格 View 都将知道要绘制什么、何时绘制以及放置在何处。 </p>
<p>使用他们的代表有点麻烦,因为一开始有点乏味,但使用 <code>viewForHeaderInSection</code> 证明是我获得我(你)想要的结果的唯一方法。 </p>
<p>希望这会有所帮助 - 编码愉快! </p></p>
<p style="font-size: 20px;">关于ios - UiTableView 标题没有消失,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/46587878/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/46587878/
</a>
</p>
页:
[1]