tableHeaderView beim Erscheinen unter der NavigationBar verstecken

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • tableHeaderView beim Erscheinen unter der NavigationBar verstecken

    Hallo,
    ich habe im Storyboard eine UIView mit UISegmentedControl über meine UITableViewCells eingefügt.
    Ich möchte mit dieser View das gleiche Verhalten haben wie mit der Suchleiste in der Mail App.

    Nun ist das Problem, dass ich diese View beim Erscheinen hinter der Navigation Bar verstecken will.
    Erst wenn der User nach oben scrollt, soll er sie sehen.

    Nun könnte ich ja einfach zur ersten Zelle scrollen und somit die tableHeaderView nach oben unter die NavigationBar verschieben.
    Habe ich aber nun weniger Zellen als die Höhe des Bildschirmes im TableView, erlaubt ja das TableView nicht mal dass ich die HeaderView rausschieben kann.

    Wisst ihr wie ich dieses Verhalten bekommen kann?
  • macmoonshine schrieb:

    Du kannst allenfalls den gesamten Tableview nach oben verschieben bzw. ihn so nach oben verlängern, dass der Headerview nicht mehr sichtbar ist.


    Theoretisch müßte er doch auch ausrechnen können wie hoch das TV ist und eine enstsprechende Leerzelle unten dran hängen, so das er immer genau um den Header nach oben schieben kann oder?

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Quellcode

    1. CGRect rect = self.tableView.bounds;
    2. rect.size.height = rect.size.height + 44;
    3. [self.tableView setBounds:rect];
    4. NSLog(@"%f", self.tableView.bounds.size.height);

    Hab ich auch gemacht.
    Funktioniert nicht.
    NSLog gibt zwar danach die neue Größe richtig aus, aber beim Start ist immer noch die HeaderVew ganz oben.

    Komischerweise funktioniert ein

    Quellcode

    1. [self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:YES];

    auch nicht. Hier ist beim Start auch wieder die headerView ganz oben.
    Wenn es genügend Zellen gibt müsste mit dieser Zeile doch die erste Zelle direkt unter der NavigationBar sein?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Bayer ()

  • Funktioniert auch nicht

    Quellcode

    1. NSLog(@"%f", self.tableView.bounds.origin.y); // 0.000000
    2. CGRect rect = self.tableView.bounds;
    3. rect.origin.y -= 44.0;
    4. [self.tableView setBounds:rect];
    5. NSLog(@"%f", self.tableView.bounds.origin.y); // -44.000000


    Beim Start der App ist die headerView wieder ganz oben.

    Kann das mit Storyboard zusammenhängen, dass irgendeine Regel festlegt, dass das tableView genau unter der NavigationBar anfängt?
  • macmoonshine schrieb:

    Bayer schrieb:

    Kann dass daran liegen, weil nur eine View vorhanden ist die von Unten bis bis NavigationBar geht?

    Ja, daran liegt es wahrscheinlich. Pack den Tableview mal in einen anderen View.


    Was mir dann aber nicht helfen wird, einen Teil des TableViews unter der NavigationBar zu verstecken oder?
    Weil wenn der NavigationController mir diesen begrenzten Platzhalter für mein TableView vorgibt, kann ich ja ändern was ich will und das TableView wird nie größer werden.