2011-09-30 13 views

Odpowiedz

22

W metodzie sterownika viewDidAppear:, ustaw właściwość contentOffset (w UIScrollView) widoku tabeli, aby ukryć pasek wyszukiwania.

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

Używanie viewDidAppear: może spowodować, że zmiana contentOffset stanie się widoczna dla użytkownika aplikacji. Korzystanie z metody viewWillAppear: spowoduje wprowadzenie zmiany, zanim cokolwiek zostanie wyświetlone użytkownikowi. – Shoerob

+2

Możesz również zrobić to w 'viewDidLoad', aby zrobić to tylko raz na początku i nadal pamiętać swoje miejsce w tableView po powrocie do widoku (na przykład w' UINavigationController'). – devios1

4

Podobne do murat's answer, tutaj jest bardziej mobilny i poprawna wersja, która będzie pozbyć się animowane potrącenie na widoku obciążenia (zakłada pasek wyszukiwania ma właściwość wylotową nazwie searchBar):

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

AKTUALIZACJA:

Aby umożliwić stukanie w ikonę wyszukiwania w indeksie sekcji, należy zastosować następującą metodę, która przywraca przesunięcie treści:

- (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; 
} 
Powiązane problemy