菜鸟教程小白 发表于 2022-12-13 02:44:30

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]
查看完整版本: ios - UiTableView 标题没有消失