只要你不介意'點'是一個固定的顏色,這確實可以用已經提供的方法來完成。您只需要使用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
移動到相應的部分,而用戶正在滾動。再次,你將不得不做一些數學來完美排列一切。
希望有助於!
非常感謝。將嘗試。我唯一的問題是我的TableView是一個單獨的部分。如果我將它分成多個部分,是否必須爲每個部分設置一個標題,或者我可以將它顯示爲一個大部分? – 2012-01-04 09:52:44
您不需要每個部分的標題。只需在' - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section;'方法中返回'nil'。 – msgambel 2012-01-04 17:17:53