2014-04-21 22 views
5

w carousel viewForItemAtIndex używam reuse view coś jak to-czy dobrze jest używać widoku ViewCntroller w icarousel?

-(UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view{ 

if (!view){ 

    UIViewController * viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"PopUpView"]; 
    view = [viewController.view viewWithTag:1]; 
    CGRect Frame = CGRectMake(view.frame.origin.x+300, view.frame.origin.y, view.frame.size.width+300, view.frame.size.height-350); 
    view.frame = Frame; 
} 

jest to dobre podejście?

+1

Można również poprawić wydajność, nie przydzielając kontrolera view za każdym razem. W tym celu należy buforować kontroler widoku w 'NSMutableArray' i ponownie użyć go w następnym wywołaniu tego samego indeksu. – Selvin

Odpowiedz

5

Powiedziałbym, że to jest , a nie dobre podejście. Tutaj tworzysz kontroler widoku, aby natychmiast go wyrzucić, co nie ma sensu.

Jeśli potrzebujesz tylko widoku, możesz go załadować bezpośrednio z pliku nib bez potrzeby używania kontrolera widoku. Możesz powiązać jego działania z głównym kontrolerem widoku dla karuzeli (jest na to przykład w projekcie ControlsExample dołączonym do biblioteki) lub utworzyć niestandardową klasę widoku i powiązać ujścia subview z samym widokiem.

Jeśli chcesz używać kontrolera widoku dla każdego widoku elementu karuzeli (którego nie polecam, ponieważ nie jest to konwencja używana dla UITableView lub UICollectionView, na którym jest wzorowany iCarousel), powinieneś dodać kontroler widoku jako kontroler widoku podrzędnego głównego kontrolera karuzeli, ale jest to skrzypce, ponieważ nie ma oczywistego miejsca, w którym można ponownie usunąć kontroler podrzędny, gdy jego widok zniknie z ekranu).

1

Zgodnie z podejściem nie ma nic złego w korzystaniu z widoku kontrolera widoku. UIView to miejsce, w którym radzisz sobie z tym, jak wygląda, UIViewController to klasa, w której obsługujesz zdarzenia. Jeśli chcesz obsłużyć dowolne zdarzenia, lepszym rozwiązaniem jest użycie widoku UIViewController.

+0

Ale jest tworzenie instancji ViewController w viewController. Naprawdę nie ma znaczenia? –

+0

Nie, Nie ma nic złego w tworzeniu obiektu viewController w kontrolerze widoku, ale upewnij się, że jest on tworzony tylko raz i ponownie użyty tam po uniknięciu dużego zużycia pamięci. – NKB