2013-02-11 12 views
6

Mam UITableView z wdrożonym searchDisplayController. MamUkryj UITableView, gdy wyświetla się searchResultsTableView

tableView.backgroundColor = [UIColor clearColor]; 

i

self.searchDisplayController.searchResultsTableview.backgroundColor = [UIColor clearColor]; 

Kiedy wprowadzić tekst w polu wyszukiwania, wyniki wyszukiwania są wyświetlane w porządku, ale jako tło powstałej tabeli jest przejrzyste, widzę mój tableview i na tableview wyświetlana jest tabela wyników wyszukiwania. Chcę ukryć tableView, gdy searchField rozpoczął edycję. Próbowałem wykonać próbę:

Ukrywa jednak wyszukiwarkęBar przy użyciu tableView. Jak to naprawić?

+0

gdzie U dodać UISearchBar ??? na UITableView ??? – iPatel

+0

Tak, Przeciągnąłem UISearchDisplayController i dodałem pasek wyszukiwania do tableView – tausun

+0

dziękuję bardzo, zadziałało. – tausun

Odpowiedz

2

pierwsze wiem, że dodasz searchDisplayController na UITableView .

Usuń go proszę i dodaj swoje UISearchDisplayController na View Controller nie na UITableView, beacuse jeśli ukryć UITableView następnie UISearchDisplayController ukryć również dlatego, że dodaje UISearchDisplayController na UITableView.

Dzięki :)

0

przede wszystkim sprawiają, że wylot tabeli i połączyć go z tabeli następnie spróbuj tego wiersza kodu

tableView.hidden=TRUE; 

będzie działać ....

+0

tableView jest już gniazdem i jest podłączony.i robiłem to samo, co napisałeś. – tausun

2

można skonfigurować źródło danych dla tableView w taki sposób, że zwraca 0 sekcje gdy interfejs wyszukiwania jest widoczny:

- (NSInteger) numberOfSectionsInTableView: (UITableView *) tableView 
{ 
    if (self.searchDisplayController.active && 
     (tableView != self.searchDisplayController.searchResultsTableview)) 
     return 0; // return 0 for bottom table view if search interface is active 
    else 
     return <your usual number of sections> 
} 

A potem zamiast ukrywanie widok tabeli, możesz zrobić [tableView reloadData], aby ukryć całą zawartość. Następnie po zakończeniu wyszukiwania ponownie załaduj widok tabeli, aby ponownie wyświetlić zawartość.

Ponowne załadowanie widoku tabeli spowoduje zresetowanie wszystkich komórek widoku tabeli i przesunięcia zawartości widoku tabeli, więc w niektórych przypadkach może nie być dobrym pomysłem.

Alternatywnie, można spróbować wykonać iterację wszystkich widocznych komórek widoku tabeli i ukryć je tak:

for (UITableViewCell *cell in tableView.visibleCells) 
{ 
    cell.hidden = YES; 
} 
+0

Myślałem o tym wcześniej, ale potrzebowałem prostszego rozwiązania. Dzięki za twoją odpowiedź. – tausun