我要做的是自定义UITableView索引的外观。经过一番搜索,我得出的结论是,这是不可能的,我必须制作一个自定义视图来完成下面的屏幕截图。
example http://img705.imageshack.us/img705/8573/57screenshot20111231at9.png
我的表格视图没有章节,所以我想要做的是在点击其中一个小点时向下或向上滚动一个“页面”。此外,我希望用户能够在视图上滑动以快速跳过页面,就像标准表视图索引一样。
如果您向我提供类似于此的示例或至少某些指导方针,我将不胜感激。
答案 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
移动到相应的部分。再一次,你必须做一些数学运算才能完美排列。
希望有帮助!