2014-10-01 52 views
0

我有我的表視圖的搜索欄作爲其tableHeaderView(主要是因爲它保持鍵盤焦點,即使調用reloadData)。使UITableViewIndexSearch跳轉到tableHeaderView而不是第0節

我也有我的右邊字母索引列表,驚人的UITableViewIndexSearch表示放大鏡圖標的頂部。但sectionForSectionIndexTitle:atIndex:將只允許將其映射到部分索引0,該索引自動滾動到表視圖的第一部分(但將我的搜索字段隱藏在其上方)。無論何時索引的放大鏡圖標被點擊,揭示整個tableHeaderView的最優雅方式是什麼?

回答

0

顯然我可以通過調用一個非常輕微的(0.01秒)延遲tableView.contentOffset = CGPointZero來實現這一點,然後我從sectionForSectionIndexTitle:atIndex:返回零。這很腥,但它起作用。

3

從馬特·紐伯格的著作「編程的iOS 7」,我發現這相當有用的技巧:

當用戶點擊放大鏡(索引0),它滾動標題到視圖,我們將返回假部分號碼。

夫特:

func tableView(tableView: UITableView, 
     sectionForSectionIndexTitle title: String, 
          atIndex index: Int) -> Int { 
    if(index == 0){ 
     tableView.scrollRectToVisible((tableView.tableHeaderView?.frame)!, animated: false) 
    } 
    return index-1 
} 

目的-C:

- (NSInteger)tableView:(UITableView *) 
     sectionForSectionIndexTitle:(NSString *)title 
          atIndex:(NSInteger)index { 
    if(index == 0) 
     [tableView scrollRectToVisible:tableView.tableHeaderView.frame animated: NO]; 

    return index-1; 
} 
相關問題