2010-12-06 22 views
0

Je crée une instance d'une sous-classe de UITableViewController sans xib. Je ne vais pas utiliser un fichier xib. Je compile les données dans la routine -(id)init. Je crée les données pour la table dans la fonction -(id)init et j'utilise les méthodes des protocoles UITableViewDataSource et UITableViewDelegate pour afficher et sélectionner les données. Je charge la sous-classe UITableViewController dans un UINavigationController en utilisant le [[UINavigationController alloc] initWithRootViewController: myTVC]; Tout cela réussit SI je ne définis pas la méthode loadView pour la classe. Si je fais une méthode loadView vide, un UIView vide est mis à l'écran.Appel de loadView pour sous-classe UITableViewController

Ma question: Comment écrire la fonction loadView correcte pour une sous-classe simple de UITableViewController?

Répondre

3

On ne devrait jamais appeler jusqu'à [super loadView] par la documentation d'Apple: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/#//apple_ref/occ/instm/UIViewController/loadView

La bonne façon de gérer cela est de simplement instancier une vue et le mettre à self.view, et dans ce cas self.tableView ainsi :

- (void)loadView { 
    UITableView* tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; 
    tableView.delegate = self; 
    tableView.dataSource = self; 

    self.view = tableView; 
    self.tableView = tableView; 
}