具有自定义索引视图的UITableView

时间:2011-12-31 20:02:35

标签: iphone ios uitableview

我要做的是自定义UITableView索引的外观。经过一番搜索,我得出的结论是,这是不可能的,我必须制作一个自定义视图来完成下面的屏幕截图。

example http://img705.imageshack.us/img705/8573/57screenshot20111231at9.png

我的表格视图没有章节,所以我想要做的是在点击其中一个小点时向下或向上滚动一个“页面”。此外,我希望用户能够在视图上滑动以快速跳过页面,就像标准表视图索引一样。

如果您向我提供类似于此的示例或至少某些指导方针,我将不胜感激。

1 个答案:

答案 0 :(得分:4)

只要您不介意'圆点'是固定颜色,这确实可以用已经提供的方法来实现。您只需要使用2种方法:

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView;

- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index;

您还需要一个UIImageView来保存您在所选“点”上的透明图像。

在第一种方法中,为表单NSArray返回[NSArray arrayWithObjects:@".", @".", ..., @".", nil];。这将在侧栏中输入“点”,其中每个点代表UITableView的1个部分。当用户点击其中一个“点”时,UITableView将移动到相应的部分。由于您希望每个部分的长度为1页,因此只需相应地对数据进行分区。

对于第二种方法,您可以在此处调整UIImageView的框架,其中包含覆盖所选点的透明图像。只需更改.frame.属性即可与新选择的部分对齐。你需要做一些数学计算才能正确排列,但这很容易。

您还需要使用UIScrollViewDelegate方法来处理用户滚动时移动透明图像。他们是:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView;

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;

这些将允许您在用户滚动时将UIImageView移动到相应的部分。再一次,你必须做一些数学运算才能完美排列。

希望有帮助!