2011-02-10 9 views
13

Chciałbym mieć UISearchBar na szczycie mojego UITableView, który ukrywa kiedy przewijasz w dół: Odpowiedź jest łatwa, po prostu muszę ją dodać na mój widok tabeli nagłówka jak poniżej:UISearchBar na UITableView, który może się ukryć, ale pozostać blisko UINavigationBar

UISearchBar *search = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 320, 45)]; 
self.tableView.tableHeaderView = search; 
[search release]; 

Ale problemem jest to, że podczas przewijania w górę UISearchBar dopasowanie do górnej z UITableView, a nie w górnej części UINavigationBar. Aby być bardziej zrozumiałym, stworzyłem ekran w Mail (niedobry) i Game Center (dobry).

enter image description here

chcę taka sama jak w Game Center. Czy masz pojęcie, jak to robią?

Odpowiedz

4

Będziesz musiał ukryć pasek wyszukiwania na własną rękę po przewinięciu widoku tabeli. Więc nie umieszczaj go jako nagłówka UITableView. Możesz go ukryć, ustawiając jego wysokość na zero. W ten sposób, jeśli Twój widok stołowy jest ustawiony na autoreoryzację, zostanie on rozwinięty.

Chciałbym eksperymentować z posiadaniem UITableView i UISearchBar jako rówieśników w innym widoku. Obraz GameCenter nie ma paska wyszukiwania jako nagłówka widoku tabeli, ale ma je jako oddzielne widoki podrzędne.

Można również spojrzeć na UISearchDisplayController, ale myślę, że to nie ma takiego zachowania, które chcesz.

Edycja: This question to w zasadzie twoje pytanie i ma trochę kodu w odpowiedziach.

+0

Musimy więc zrobić wszystko "ręcznie", ponieważ nie ma prostego komponentu? –

+0

Można wyszukiwać w github lub bitbucket, aby sprawdzić, czy ktoś stworzył bibliotekę, którą można pożyczyć. W przeciwnym razie myślę, że musisz zająć się tym swoim własnym kodem. – Walter

0

Prawidłowa strona UISearchBar znajduje się na innym UIView, nie jest częścią UITableView. Można więc dodać widok podrzędny, aby umieścić pasek UISearchBar, a inny widok podrzędny dla widoku UITableView.

1

Nagłówek widoku stołowego zostanie przesunięty podczas przewijania w dół. Jest to własność tableview. Jeśli chcesz umieścić pasek wyszukiwania z paskiem nawigacji. Dlaczego nie umieszczasz paska wyszukiwania tuż pod paskiem nawigacji. Użyj paska wyszukiwania i oddzielnego widoku stołowego.

+0

1. Tak, wiem i nie chcę tego zwoju/2. Ponieważ chcę ukryć pasek UIScroll podczas przewijania do dołu –

+1

Jeśli chcesz ukryć podczas przewijania w dół, spróbuj użyć delegate scrollViewDidBeginScrolling, a wewnątrz delegat, jeśli scrollView.contentOffset jest większy od zera, powoduje ukrywanie paska wyszukiwania. –