tableView的重点是什么:sectionForSectionIndexTitle:atIndex:?

时间:2010-04-12 19:00:55

标签: iphone uitableview

文档对此并不十分清楚。为什么要求UITableViewDataSource提供索引栏节标题的节索引?

我的意思是......哪些用例会使这种方法变得重要?什么时候被召唤?为什么?

3 个答案:

答案 0 :(得分:16)

基本上,它定义了当您单击指定的部分索引标题时表视图滚动到哪个部分。假设您将索引标题定义为字母A到Z,但实际上并没有每个字母的项目。在-tableView:sectionForIndexTitle:atIndex:中,您可以指定包含项目的 next 部分。

答案 1 :(得分:4)

website有一个很好的答案:

sectionIndexTitlesForTableView :为了正确呈现索引,UITableView需要知道要显示的所有索引标题。此方法返回包含所有索引的字符串数组。在我们的例子中,A,B,C,D等

sectionForSectionIndexTitle :当您开始滚动索引时,表格需要知道向下/向上滚动的距离,以便您触摸的字母对应表格中的相应部分。此方法返回您当前在索引中触摸的部分的索引值(整数)。

答案 2 :(得分:0)

您询问的方法" -tableView:sectionForSectionIndexTitle:atIndex:"正在连接2​​个(下面)相关列表,关于UITableView普通样式数据填充。

第一个列表:TableView-Section-Title-List“TVSTL”,在" Contacts App"中,它由人们的LastNames组成/排序。部分标题出现在屏幕的左侧。

第二列表:Indexed-List-Titles“ILT”,通常显示在屏幕的右侧,它可以是关于上面的section-headers的任意索引组。此列表供用户点击,它就像滚动栏一样。

iOS文档对这两个列表不是很清楚,因为“TVSTL”当前列表可能比“ILT”更大或更小,对哪个列表更长没有限制。

和"联系人APP"这是一个很好的例子来展示这个关键点...除非你的人名很少(让我们说不到10个),或者你有中文汉字人名,没有头衔,但是被分组为部分,并且这些部分不能被索引。

因此,当这两个列表不匹配时," -tableView:sectionForIndexTitle:atIndex:"正在提供有关TableView的下一次滚动动作的解决方案。

Apple的文档"填充索引列表"详细解释了它的建议实现,但它有点麻烦(使用4个For循环,5个数组)。如果您不想要"以编程方式创建表视图",您可以跳过这些代码,否则,它们在清单4-5,清单4-6,清单4-7,清单4-中8,Table View Programming Guide for iOS

的清单4-9