【问题标题】:ios - a single static header that changes as you scrollios - 一个随着滚动而变化的静态标题
【发布时间】:2012-07-18 17:51:39
【问题描述】:

我已经搜索了很多,但似乎找不到答案......

我有一个 tableView 可以滚动所有月份的所有日期。我有一个 titleForHeaderInSection: 和 viewForHeaderInSection: 在每个月的顶部显示一个节标题,它在顶部适当地替换,很酷。但是如何创建一个标题标签在我滚动时更改为正确月份的单个标题(换句话说,没有多个部分标题,只有一个)?

我不知道这是否应该设置为“一个(大)部分的标题会发生变化”或“一个 headerView 会发生变化”,或者其他什么......任何示例将不胜感激。先感谢您。

【问题讨论】:

    标签: ios uiview uilabel sectionheader


    【解决方案1】:

    您可以创建一个静态视图并将其放置在您的 tableView 之上。然后您可以使用visibleCells 属性来确定哪些单元格可见。当这些单元格更改为新部分的单元格时,您可以更新UITableView 上方的静态视图。

    一旦你是UITableViewdelegate,你也是UIScrollViewdelegate,它是建立在它之上的。

    因此您可以捕获scrollViewDidScroll: 委托调用并在那里更新您的标头。

    所以说一下:

    1.) 在 UITableView 上方创建一个标题视图

    2.) 成为UITableView 中的delegate

    3.) 实现scrollViewDidScroll: 方法来检测滚动

    4.) 在scrollViewDidScroll 方法中,使用UITableViewvisibleCells 属性来确定要显示哪些单元格并适当地更新您的标题视图。

    我从来没有做过这样的事情,但我不明白为什么它不起作用。

    编辑:正如 Husker Jeff 指出的那样。使用indexPathsForVisibleRows 来确定屏幕上的内容可能更容易。然后,您可以很容易地使用它来确定正在显示哪些部分/部分。谢谢杰夫!

    【讨论】:

    • 贾斯汀比我快了一分钟,几乎把我想说的都说了。我唯一要补充的是,您可以使用indexPathsForVisibleRows 而不是visibleCells——它可能会为您节省一个获取基础数据的步骤。
    • 优秀的加法剥壳者,那会容易一些,尤其是如果他按部分更改标题。
    猜你喜欢
    • 1970-01-01
    • 2014-05-21
    • 2011-12-21
    • 1970-01-01
    • 2014-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多