2010-08-06 6 views
0

Je suis en train de mettre en œuvre un contrôleur de navigation modale tel que décrit dans le Guide d'Apple iOs: Combined View Controller InterfacesUIViewController ne répondant pas à presentModalViewController pour la navigation modale

Je suis venu à la conclusion que je manque quelque chose à la fois évidente et stupide que je Je n'arrive pas à afficher quoi que ce soit, je reçois un écran blanc. Permutation de choses Je peux prouver que le contrôleur de vue que j'utilise comme contrôleur de navigation RootViewController fonctionne correctement (en l'ajoutant manuellement en tant que vue subChild). En outre, l'implémentation de addSubView ([self.view addSubview: navController.view]) au lieu de presentModalViewController semble fonctionner correctement.

Quelqu'un peut-il me signaler mon simple erreur parce que je suis à 5 minutes à court de coups de pied mon propre visage: D

tête

#import <UIKit/UIKit.h> 

@interface BaseViewController : UIViewController { 

} 

mise en œuvre

#import "BaseViewController.h" 
#import "ScannedListViewController.h" 
#import "ScannedItemViewController.h" 

@implementation BaseViewController 

- (void)viewDidLoad { 

    ScannedListViewController *listViewController = [[ScannedListViewController alloc] init]; 
    ScannedItemViewController *itemViewController = [[ScannedItemViewController alloc] init]; 

    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:listViewController]; 
    [navController pushViewController:itemViewController animated:NO]; 

    [self presentModalViewController:navController animated:YES]; 

    [listViewController release]; 
    [itemViewController release]; 
    [navController release]; 

    [super viewDidLoad]; 

} 

Le RootControllerView est un test de base TableViewController avec l'en-tête suivant

@interface ScannedListViewController : UITableViewController <UITableViewDelegate, UITableViewDataSource> 

Nous vous remercions à l'avance si votre mesure d'aider

Répondre

1

Pourquoi vous présentez quelque chose dans la méthode viewDidLoad de façon modale d'un contrôleur de vue? Je trouve ça bizarre au sommet. Généralement, vous montrez un contrôleur de vue modale en réponse à une action (par exemple en appuyant sur un bouton).

Y a-t-il une raison pour laquelle vous montrez un contrôleur de navigation avec un second contrôleur de vue déjà enfoncé après la racine?

Vous devez avoir [super viewDidLoad] comme première ligne et non comme dernière ligne de la méthode. Vous ne devez pas avoir <UITableViewDelegate, UITableViewDataSource> après UITableViewController car il adopte déjà ces protocoles. Enlevez ce bit.

+0

Hmm .. Eh bien, le résultat souhaité est de charger l'application, afficher une vue pendant 5 secondes, puis passer à la partie principale de l'application qui est un formulaire de trois pages contrôlé par un navigationController. Peut-être ai-je été induit en erreur quant à l'approche que je devrais prendre. Le second contrôleur de vue activé est directement issu de l'exemple d'Apple. J'ai supposé que je construisais une pile de vue, car je n'ai pas pu voir les résultats que je n'avais pas réalisé ce n'était pas la meilleure pratique! – lucygenik

+0

Si vous avez l'intention d'afficher une vue pendant 5 secondes, puis que vous affichez une autre vue de manière modale, vous ne l'obtiendrez pas en le faisant dans 'viewDidLoad'. Vous devrez utiliser un 'NSTimer' et définir son rappel à une méthode qui pousse la vue modale. –

+0

Merci Shaggy, ça a fonctionné parfaitement. Je dois travailler sur ma compréhension des cycles de vie des vues! – lucygenik

Questions connexes