Ho una vista tabella con una barra di ricerca sopra. Il mio requisito è di non mostrare la barra di ricerca quando qualcuno apre la pagina, ma quando qualcuno fa scorrere il tavolo verso il basso, la barra di ricerca dovrebbe essere visibile.Mostra la barra di ricerca solo quando l'utente tira giù la tabella
11
A
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);
}
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;
}
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
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