W bibliotece obiektów Xcode istnieją dwie opcje, których można użyć do utworzenia widoku tabeli - widoku tabeli i kontrolera widoku tabeli. Jaka jest różnica między tymi dwoma i kiedy będą one używane?iOS - Jaka jest różnica między widokiem tabeli i kontrolerem widoku tabeli
Odpowiedz
TableViewController jest ViewController z wbudowanym TableView. Będzie to zawierało wymagane metody delegatów już zadeklarowane i skonfigurowane. Ten VC jest już delegatem TableView i źródłem danych. Nie można zmienić rozmiaru. Upside to łatwość użycia, wadą jest bardzo ograniczona elastyczność.
TableView jest po prostu TableView (podklasa UIView). Może być dodany do kontrolera ViewController i skalowany, używany razem z innym obiektem opartym na widoku itp. Plusem jest elastyczność, wadą jest to, że musisz sam skonfigurować metodę przekazywania i źródła danych (moim zdaniem, warto poświęcić czas na uzyskanie elastyczność).
Jeszcze jedna uwaga jest taka, że podczas korzystania z nowych komórek Static TableView (część iOS5), należy użyć TableViewController.
UITableViewController
jest podklasą UIViewController
. Zakłada się, że jako rootView masz UITableView
, więc już masz dostęp z kodu do tableView (self.tableView). Implementuje protokół UITableViewDataSource
i UITableViewDelegate
. Daje również wiele metod, które można przesłonić. Pozwala nie zależeć od pliku XIB, ponieważ już wiesz, co będziesz mieć (UITableView
jako rootView).
UITableView
tylko UIView
, zwykle trzeba będzie zgodne z protokołami Mam przywołanych powyżej w UIViewController
w celu wypełnienia (źródło danych) i pracować z nim (delegata) i prawdopodobnie trzeba stworzyć IBOutlet dla twojego UITableView
.
Z jednej strony masz szybkość, ale nie jesteś tak elastyczny jak druga. Z drugiej strony masz odwrotność.
Twoja odpowiedź jest ogólnie poprawna, ale trochę biseksualna dla mojego gustu. Dla wyjaśnienia, IBOutlets są na pewno potrzebne tylko w przypadku, gdy zamierzasz używać InterfaceBuilder do prezentowania swoich poglądów. Zadanie to może z pewnością równie dobrze (czasem lepiej) zostać zrealizowane przy użyciu zwykłego kodu. – Till
Ja wolę używać 'InterfaceBuilder' kiedy tylko mogę, jego szybsze i utrzymuje kod w czystości. Oczywiście możesz zadeklarować 'UITableView' w swoim kodzie i po prostu dodać go do' UIView', chociaż mi się to nie podoba. – Peres
Dobrze wspomnieć o braku zmiany rozmiaru/udostępniania 'UITableView' z innymi kontrolkami na tym samym ekranie, gdy używany jest' UITableViewController'. Z drugiej strony, zawsze można użyć części 'tableHeaderView' i' tableFooterView' dla innych kontrolek. – Till
To prawda, ale podczas robienia rzeczy takich jak posiadanie statycznego paska wyszukiwania (który nie przewija), VC z TableView działa dobrze. –