Korzystając z UITableView, możemy ponownie wykorzystać jego komórki metodami [[ UITableViewCell alloc] initWithStyle: reuseIdentifier:]
i [uiTableViewInstance dequeueReusableCellWithIdentifier:]
. Pomaga to utrzymać pamięć w ryzach przy dużych stołach, ponieważ w danym momencie w widoku jest tylko kilka komórek.Jak ponownie użyć/zutylizować niestandardowy element, taki jak uitableviewcell?
Chcę utworzyć UIScrollView
, który ma wiele subviews. Wstawienie wszystkich subviews wymaga dużej pamięci i początkowego czasu, którego chcę uniknąć. Czy Apple API oferuje sposoby ponownego użycia takich niestandardowych składników (UIView lub jego podklasy tutaj), podobnie jak widoki komórek z wykorzystaniem identyfikatora?
Będę je tworzyć, jeśli nie ma API, ale mam pewne wątpliwości co do tego. Na przykład dla każdego nowego podglądu ustawiam pozycję ramki po widokach poprzednich. W jaki sposób powinienem zaktualizować ramkę dla każdego wydziału podczas recyklingu? Czy powinienem usuwać i ponownie ładować zawartość każdego z wyeksportowanych elementów? Czy powinienem wykonać wszystkie te obliczenia w innym wątku, aby uniknąć szarpanego przewijania? W sumie chciałbym mieć płynne przewijanie, takie jak w UITableView z wszystkimi reusingami.
Oto przykład kodu, który napisałem do tej pory:
int numberOfPages = 0;
int pageWidth = 100;
int pageHeight = 100
UIScrollView *myScrollView = //allocate and initialize a scrollview
//set its size to 100 by 100 (width equal to pageWidth)
//set paging enabled for myScrollView
Dodawanie subviews do niego z metody, która jest wywoływana wielokrotnie
- (void) appendSubViewToScrollView {
UIView *view = //allocate and initialize a view and dump data in it.
CGRect rect = view.frame;
rect.size.height = pageHeight;
rect.size.width = pageWidth;
rect.origin = CGPointMake(pageHeight * numberOfPages, 0);
view.frame = rect;
[myScrollView addSubview:view];
numberOfPages++;
[scrollView setContentSize:CGSizeMake(pageHeight * numberOfPages, pageWidth)];
[view release];
}
Edit:
pewien wgląd sposób, w jaki widok tabeli i jego komórki osiągną to za kulisami, byłby użyteczny.
Dzięki za odpowiedź Viggio. Czy jest jakiś kod związany z tym? Mógłbym użyć jakiegoś odniesienia. I tak, jestem zarejestrowanym programistą. Czy możesz wskazać odpowiedni film dla tej sprawy? ("Ramy aplikacji"? Będę obserwować resztę w wolnym czasie). Pobrałem też przykładowy kod. Wygląda interesująco i użytecznie. – Sailesh
Zaznacz tę odpowiedź jako zaakceptowaną za pomocą znacznika wyboru (pod strzałkami do głosowania w górę/w dół). – JoePasq
Niestety nie pamiętam, co jest filmem wyjaśniającym tę technikę, ale pamiętam, że zostało to wyjaśnione za pomocą demo. Jest film wideo "Projektowanie aplikacji z widokami przewijania", ale nie jestem pewien, czy jest to odpowiedni film, w każdym razie warto na niego patrzeć (wyjaśnia kilka pięknych technik). Strona główna wideo WWDC zaczyna się tutaj: http://developer.apple.com/videos/wwdc/2010/ od miejsca, w którym zalogujesz się na swoje konto programisty, a następnie będziesz mógł otworzyć iTunes i pobrać lub po prostu obejrzeć filmy. Ten, o którym mówię, to 104 ("Projektowanie aplikacji z widokami przewijania"). – viggio24