2011-09-30 78 views

回答

22

在您的控制器的viewDidAppear:方法中,設置您的表視圖的contentOffset屬性(在UIScrollView中)以隱藏搜索欄。

- (void)viewDidAppear:(BOOL)animated{ 
    [super viewDidAppear:animated];  
    self.tableView.contentOffset = CGPointMake(0, SEARCH_BAR_HEIGHT); 
} 
+11

使用viewDidAppear:可以導致contentOffset更改顯着發生在應用程序的用戶身上。使用viewWillAppear:將在向用戶顯示任何內容之前進行更改。 – Shoerob

+2

你也可以在'viewDidLoad'中做到這一點,一開始就做一次,並且在返回視圖時(例如在'UINavigationController'中),仍然記得你在tableView中的位置。 – devios1

4

相關的murat's answer,這裏有一個更便攜和正確的版本將與動畫抵消的觀點負載做掉(它假定在搜索欄中有一個名爲searchBar出口屬性):

- (void)viewWillAppear:(BOOL)animated 
{ 
    self.tableView.contentOffset = CGPointMake(0, self.searchBar.frame.size.height); 
} 

更新:

爲了適應點擊索引節中的搜索圖標,需要實現以下方法,它將恢復內容偏移:

- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title 
       atIndex:(NSInteger)index 
{ 
    index--; 
    if (index < 0) { 
     [tableView 
      setContentOffset:CGPointMake(0.0, -tableView.contentInset.top)]; 
     return NSNotFound; 
    } 
    return index; 
} 
相關問題