2013-09-25 15 views
16

Mam aplikację, w której mam UITableView z sekcjami, które można przewijać na stronie przez sectionIndexTitlesForTableView:.Utwórz pasek wyszukiwania, jak w aplikacji Kontakty iOS 7

W numerze tableHeaderView z UITableView chcę dodać numer UISearchBar, który chcę zachować jak ten, którego używa Apple w nowej aplikacji Kontakty w iOS7. Ale nie mogę tego zmusić do działania.

Pasek wyszukiwania nie jest w 100% szerokości ekranu, ale ma prawą stronę względem indeksu przekroju.

Moje pytania są następujące:

  • Jak uzyskać szerokość paska wyszukiwania do 100%, gdy jest to tableHeaderView o UITableView która ma widzialną indeksu sekcji?
  • Jak utworzyć przejście, jak w aplikacji Kontakty w iOS 7, gdzie ukrywa się pasek nawigacji, a szare tło paska wyszukiwania rozciąga się na pasek stanu?

Próbowałem już kilku rzeczy, w tym dodawania paska wyszukiwania na pasku nawigacji i korzystania z UISearchBarController, ale nie mogę znaleźć dobrej dokumentacji na stronie Apple na temat tworzenia tego. Również przewodnik przejścia z iOS6 na iOS7 nie był dla mnie dobrą pomocą.

Oto dwa zdjęcia, które ilustrują mój problem: enter image description here enter image description here

Odpowiedz

0

dwie rzeczy:

1) Ustaw tableView na sectionIndexBackgroundColor na [UIColor clearColor].

2) Wdrożenie metody „viewDidLayoutSubviews” naprawić ramę dla UISearchBar

- (void)viewDidLayoutSubviews { 
    [super viewDidLayoutSubviews]; 
    CGRect barFrame = self.searchBar.frame; 
    barFrame.size.width = self.view.bounds.size.width; 
    self.searchBar.frame = barFrame; 
} 
5

Dwie główne różnice w sposobie ich Jabłko zrobić aplikację, która rozwiąże problemy.

Po pierwsze, ich UISearchBar nie jest headerView dla tableView. To osobny widok nad tabelą. Musisz zmienić kontrolkę UITableViewController na UIViewController, który ma UITableView umieszczony tuż pod twoim UISearchBarem.

Po drugie, ich UISearchBar ma skojarzony Search Display Controller. Zakładając, że korzystasz z pliku scenorysu, jest on dołączany do Ciebie - wystarczy dodać UISearchBar za pomocą Search Display Controller. To zajmie się przejściem do paska stanu pod tobą.

+0

Twoje rozwiązanie rzeczywiście podkreśla najważniejsze punkty. Podążałem twoją drogą i udało mi się zlokalizować pasek wyszukiwania na tableView. Jedyny problem jaki mam teraz to ... kiedy pole tekstowe wyszukiwania jest skupione, pasek wyszukiwania przejdzie na samą górę, a nawet zakryje pasek stanu. Nie wiem, jak mogę to naprawić? – xialin

+0

Najlepsze rozwiązanie. Zastanawiałem się, jak zrobić to samo z UITableViewController, ale prawda: łatwiej jest "konstruować" UITableViewController i kopiować kod na płycie głównej, niż próbować przesłonić "scrollViewDidScroll" –

Powiązane problemy