2013-01-17 9 views
7

Nagłówek został utworzony za pomocą tego posta: Table Header Views in StoryBoardsJak ustawić nagłówek UITable na górze ekranu podczas korzystania ze scenorysów?

Ale nie mogę zrobić nagłówka (poprawki) na górze ekranu podczas przewijania.

Jak można to osiągnąć?

P.S. Styl tabeli jest prosty, a kiedy zmęczony, aby przeładować viewForHeaderInSection i zwrócił ujście dla widoku nagłówka, po prostu gorzej.

Z góry dziękuję!

+0

Czy kiedykolwiek dowiedzieć się, jak to zrobić z ujęć zamiast tworzenia widok w kodzie? –

+0

Wyjaśniłem to: http://stackoverflow.com/a/23717919/1438339 –

Odpowiedz

2

byłem w stanie to zrobić (przynajmniej w iOS 6) tak, nie wiem, dlaczego to coś działa :)

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { 

    if(self.headerManualView == nil) { 
     //allocate the view if it doesn't exist yet 
     headerManualView = [[UIView alloc] init]; 

     //create the button 
     UITextField *txtField = [[UITextField alloc] initWithFrame:CGRectMake(10, 3, 250, 44)]; 

     //the button should be as big as a table view cell 
     txtField.borderStyle = UITextBorderStyleRoundedRect; 

     //set action of the button 
     //[txtField addTarget:self action:@selector(removeAction:) forControlEvents:UIControlEventTouchUpInside]; 

     //add the button to the view 
     [headerManualView addSubview:txtField]; 
    } 

    //return the view for the footer 
    return headerManualView; 
} 
9

Oto kod, który sprawia, że ​​wierzę widok nagłówka przywiera do blatu (nie jest to zachowanie domyślne):

-(void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    CGRect rect = self.tableHeaderView.frame; 
    rect.origin.y = MIN(0, self.tableView.contentOffset.y); 
    self.tableHeaderView.frame = rect; 
} 

Alternatywą jest, aby mieć widok nagłówka na pierwszej sekcji. Nie można użyć żadnego subview w viewForHeaderInSection, trzeba tam powrócić do widoku, który nie znajduje się jeszcze w hierarchii widoków. Zaletą tej metody jest to, że widok nagłówka sekcji ma być ustawiony na blacie stołu, wadą jest to, że możesz chcieć mieć nagłówki dla sekcji w obiekcie, to rozwiąże to rozwiązanie.

+0

próbowałem Twojego kodu - wygląda na to, że to nie działa dla mnie (ustawiłem MAX zamiast MIN BTW). Dziwne. – Egor

+0

@Egor Czy to się nazywa? –

+0

oczywiście, sprawdziłem to na pierwszym miejscu) – Egor

1

Myślę, że lepiej jest użyć UIViewController, zamiast UITableViewController w storyboard, aby to osiągnąć. Wystarczy umieścić nagłówek w górnej części widoku, w scenorysie i umieścić UITableView pod nagłówkiem.

+0

Mogę się do tego odwołać, ale to dziwne, że zwykły nagłówek przylepia się do góry, a ten dodany za pomocą przeciągania-upuszczania w scenorysie nie. – Egor

+0

@Jeśli widok nagłówka tableView nie przylega do początku, niezależnie od sposobu jego ustawienia. I nie sądzę, że klasa viewController robi jakąkolwiek różnicę. Jeśli umieścisz widok powyżej tableView, to nie ma efektu przewijania podskoków, co nie jest miłe. –

+0

Dziwne, ponieważ przykleiło się, gdy użyłem do tego celu tableView viewForHeaderInSection: (NSInteger) sekcja - używając tego jako przykładu http://blog.blackwhale.at/?p=104 – Egor

Powiązane problemy