2011-09-30 11 views

risposta

22

Nel metodo viewDidAppear: del controller, impostare la proprietà contentOffset (in UIScrollView) della vista tabella per nascondere la barra di ricerca.

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

Utilizzo di viewDidAppear: può causare la modifica del contenuto contentOffset all'utente della app. Utilizzo di viewWillAppear: eseguirà la modifica prima che venga visualizzato qualcosa all'utente. – Shoerob

+2

Puoi anche farlo in 'viewDidLoad' per farlo solo una volta inizialmente, e ricorda ancora il tuo posto in tableView quando ritorni alla vista (per esempio in un' UINavigationController'). – devios1

4

correlati a murat's answer, Ecco una versione più portatile e corretta che farà finita con compensazione animato sul carico vista (si presuppone la barra di ricerca ha una proprietà di uscita chiamato searchBar):

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

AGGIORNAMENTO:

Per adattarsi all'icona di ricerca nell'indice di sezione, è necessario implementare il seguente metodo, che ripristina l'offset di contenuto:

- (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; 
} 
Problemi correlati