2010-04-11 5 views
10

Hi: Chcę wyświetlić indeks sekcji w UITableView z paskiem wyszukiwania w nagłówku widoku tabeli (nie nagłówek sekcji). Ale pasek indeksu pokrywa się teraz z paskiem wyszukiwania. Czy istnieje eleganckie rozwiązanie, aby tego uniknąć i pozwolić indeksowi zacząć od nagłówka tabeli?Indeks sekcji UITableView nakłada się na pasek wyszukiwania

+1

http://stackoverflow.com/questions/556814/changing-the-size-of -the-uisearchbar-textfield. . sprawdź komentarz mike – thndrkiss

+0

thndrkiss: Masz na myśli odpowiedź. Odpowiedzi nie są komentarzami, a Mike opublikował odpowiedź tylko na to pytanie. –

+0

Witam, Sney, czy rozwiązałeś ten problem? – iXcoder

Odpowiedz

10

Zdaję sobie sprawę, że ta odpowiedź przychodzi bardzo późno, ale miałem ten sam problem i szukałem tutaj i gdzie indziej. Znalazłem dobre odpowiedzi tutaj: Changing the size of the UISearchBar TextField?

Istnieje kilka sugestii, ale jeden znalazłem najprostszy było umieścić UISearchBar i UINavBar w UIView i przekazać, że widok na setTableView. Problem polega na tym, że tabela kontroluje rozmiar widoku nagłówka, ignorując wszelkie dodane ustawienia. Dodanie widoku sprawia, że ​​stół jest przyjemny i można dotrzeć do środka i ustawić rozmiar paska wyszukiwania bez przeszkadzania przez tabelę. UINavBar ma takie same style tła jak UISearchBar, więc wypełnia dodatkową przestrzeń w spójny wizualnie sposób, chociaż trzeba dostosować swoją klatkę - zobacz poniżej:

UISearchBar searchBar = [[[UISearchBar alloc] initWithFrame:CGRectMake(0, 1, 290, 40)] autorelease]; 
UIView *searchView = [[[UIView alloc] initWithFrame:CGRectMake(0, 1, 320, 40)] autorelease]; 
UINavigationBar *navBar = [[[UINavigationBar alloc] initWithFrame:CGRectMake(1, -1, 320, 41)] autorelease]; // same gradient/style as search bar 
[navBar setTintColor:[UIColor lightGrayColor]]; 
[searchView addSubview:navBar]; 
[searchView addSubview:searchBar]; 
+0

Jon bardzo dziękuję za odpowiedź. To zadziałało dla mnie! :) – alin

4

dodam pustych strun do indeksy tablicy:

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView 
{ 
    NSMutableArray *array = [NSMutableArray arrayWithArray:_sortedKeys]; 

    [array insertObject:@"" atIndex:0]; 
    [array insertObject:@"" atIndex:0]; 

    return array; 
} 
+0

Czy to nie psuje funkcjonalności indeksu? – newenglander

+0

To nie pomaga w przypadku większych indeksów, ponieważ indeks będzie wyświetlany z okrągłymi "kropkami" zamiast z serii wpisów indeksu i nadal zachodzi na twój widok. – RickJansen