2015-07-03 11 views
12

Próbuję utworzyć stronę podobną do strony profilu Twittera. Wygląda na to, że używają podstawowego UITableView. Górny profil to tylko tabelaHeaderView. Zakładki są UISegmentedControl wewnątrz SectionRowHeader tak, że przy przewijaniu przywiera do góry. A tweety to tylko komórki w tej sekcji. A jeśli zmienisz karty, wygląda na to, że po prostu zmieniają podstawowe dane i przeładowują tabelę.Konfiguracja profilu na Twitterze iOS

Jednak jeśli grasz ze strony, można zauważyć, że zmiana zakładki zachowuje poprzednią pozycję przewijania. A jeśli przewiniesz do góry na jednej zakładce, to oczywiście druga zakładka musi być przewinięta do góry, inaczej będzie przewijana pod nagłówkiem. Ponadto, jeśli przyjrzysz się uważnie dolnej części (tweety) ma swój własny pasek przewijania po rozpoczęciu przewijania. Wygląda więc na to, że jest to własny widok tabeli. Czy to byłby nowy widok tabeli w komórce głównej strony? A jeśli to robią, przewijanie między nimi jest płynne. Możesz przewijać dolną część i tylko wtedy, gdy zakładki są przypięte do góry, przewijają się pod nią tweety.

Próbuję zbudować podobną stronę strukturalną, ale wciąż pojawiają się problemy. Idealnie chciałbym również, aby logika tych kart podrzędnych została podzielona na osobne kontrolery widoku do ponownego użycia, ale w tym momencie chciałbym, aby to działało.

Ktoś ma pojęcie o strukturze, której używają do ustawienia takiej strony?

+0

Przewiń widok w widoku przewijania? Spróbuj przejść przez ten http://oleb.net/blog/2014/05/scrollviews-inside-scrollviews/ – rounak

+0

Ale widok przewijania nie może mieć nagłówka sekcji, który trzyma się u góry. Tak więc, chyba że ręcznie budują tę logikę, jest to widok stołowy z widokiem innerscroll. Ale zwracam uwagę na problem z powyższym (nie przewija się płynnie, itp.). – Oren

+0

@Oren czy udało ci się to jeszcze rozgryźć? – kidsid49

Odpowiedz

0

jestem 99% pewien, że są po prostu dostosowanie wypustki wskaźnik przewijania podczas przewijania obejrzeć tabelę:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    CGFloat const visibleHeaderHeight = 0.0; // your logic here 
    UIEdgeInsets const insets = UIEdgeInsetsMake(visibleHeaderHeight, 0.0, 0.0, 0.0); 

    self.scrollView. scrollIndicatorInsets = insets; 
} 

Również jestem całkiem pewien, że używasz pogrupowany styl widoku tabeli z uwagi na cięcia , więc sam musisz sam zbudować lepki nagłówek. Możesz to również zrobić w -scrollViewDidScroll:.


Jeśli chcesz przerwać występy w oddzielnych kontrolerów widoku, polecam następującą konfigurację:

  • mieć kontroler widoku pojemnik zarządzający widok nagłówka zawierający zakładki
  • użycie UIViewController hermetyczności Aby podłączyć aktywny kontroler widoku, subskrybuj widok przewijania aktywnego kontrolera widoku contentOffset i dopasuj odpowiednio wstawkę wskaźnika przewijania i lepszą pozycję nagłówka y.
+0

Jeśli tylko ustawiają wstawki, w jaki sposób przekazują one przewijanie i prędkość od jednego przewijania do następnego? Spróbuj szybko przewinąć górną część nagłówka. Zauważysz, że jest zwoje, a gdy tylko tabulatory się zatrzymają, dolna część przewija się dalej. Działa jak pojedynczy przewijany widok. – Oren

+0

Mają tylko jeden widok przewijania i zmieniają położenie nagłówka zdarzenia przewijania, aby wyglądał na lepki. –

+0

Próbowałem również tej konfiguracji, a problem z posiadaniem tylko jednego przewijania i wypychaniem tweetów z zawartością zawartości jest taki, że nagłówek będzie albo za przewijaniem (i dlatego nie klikalny) lub nad nim (i w związku z tym przeszkadzałby w przewijaniu gesty). Jeśli jednak jest to pojedynczy widok tabeli, nie sądzę, aby pozycja przewijania na każdej pojedynczej karcie była zachowana, więc czy będą one ręcznie utrwalać te informacje? Takie podejście sprawiłoby, że ta strona byłaby wyjątkowo skomplikowana i trudna do utrzymania. – Oren

Powiązane problemy