Quelle est l'étape / les informations manquantes dans ce tutoriel pour iPhone Interface Builder?

StackOverflow https://stackoverflow.com/questions/1424671

Question

Je suis un tutoriel sur la façon d'utiliser Interface Builder à partir du chapitre 2 de la section "Développement d'applications pour SDK pour iPhone par Zdziarsky". L'idée semble être de créer une application très basique composée d'un contrôleur de barre d'onglets comportant deux boutons, chacun lié à un objet de vue différent (et chaque objet de vue dans son propre fichier .xib respectif). Je me retrouve avec une fenêtre vide et un code qui est très différent de ce que le livre indique que je devrais avoir.

Je soupçonne une étape manquante, mais les étapes expliquées sont dispersées dans un chapitre d’explication, je ne suis donc pas tout à fait sûr de ne pas avoir oublié quelque chose. Voici un résumé des étapes à suivre:

  1. Créer une nouvelle "application basée sur une fenêtre" nommé "Exemple."
  2. Ouvrez MainWindow.xib dans Interface Builder et procédez comme suit: a) Sélectionnez l’option " Fenêtre " icône dans la fenêtre du document, ouvrez l'inspecteur, définissez diverses propriétés superflues. b) Faites glisser un "Contrôleur de barre d’onglet" " dans la fenêtre du document. c) Modifiez les deux noms d'onglets en " Récents " et " Histoire. " d) Enregistrez MainWindow.xib
  3. Créer un nouveau " Cocoa Touch View " Modèle IB. Ajouter une " Table View " à cela. Enregistrez-le sous Recents.xib.
  4. De même, créez un autre " Cocoa Touch View " Modèle IB. Ajouter une " vue de texte " enregistrer sous le nom History.xib.
  5. Retournez à MainWindow.xib, éditez chacun des onglets du contrôleur de la barre d'onglets dans l'inspecteur de sorte que le "Nom de la plie" correspond au fichier .xib approprié créé à l'étape 3 (pour Récents) et à l'étape 4 (pour l'historique).
  6. Ajoutez Recents.xib et History.xib au projet "Exemple".

À ce stade, le livre indique que si je regarde ExampleAppDelegate.h, je devrais voir des liens vers les objets Interface Builder dans mon code, tels que:

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet RootViewController *viewController;

Cependant, lorsque je regarde le fichier, je ne vois que la première ligne (UIWindow) ci-dessus. La ligne RootViewController est absente.

De même, le livre indique que lorsque je regarde à l'intérieur de ExampleAppDelegate.m, je devrais voir certaines directives de synthèse:

@synthesize window;
@synthesize viewController;

Mais encore une fois, je ne vois que la ligne relative à la fenêtre.

Et bien sûr, si je clique sur "Construire et partir", ce que je vois dans le simulateur est une fenêtre vide.

Lors de ce processus, j’ai remarqué que je n’étais pas chargé de faire glisser le contrôleur de la barre de tabulation de l’étape 2b directement dans l’objet Window affiché dans le générateur d’interface. J'ai quand même essayé de le faire et j'ai constaté que je n'étais pas autorisé à le faire (et que les contrôleurs de vue de toutes sortes ne semblaient pas les bienvenus directement dans la fenêtre). Cela me semblait étrange - j'ai remarqué que faire glisser directement un objet View dans la fenêtre semblait correct. Mais comme les vues ne peuvent pas contenir de contrôleurs de vue, je ne vois pas comment vous êtes censé ajouter un contrôleur de vue dans une hiérarchie contenue dans une fenêtre.

Quelles sont les étapes et / ou les connaissances qui me manquent ici?

Était-ce utile?

La solution

Les fenêtres et viewController sont ajoutées au modèle de projet. Par conséquent, les modèles de XCode ont peut-être changé depuis la rédaction du didacticiel. XCode a maintenant des modèles séparés pour la barre de tabulation, la navigation et les applications basées sur les affichages. Vous devriez donc les consulter.

Avec le modèle d'application simple basé sur Window, vous devez ajouter la sortie rootViewController dans votre fichier d'en-tête AppDelegate et le connecter à votre instance de contrôleur de vue dans IB. Votre délégué d’application aurait également besoin de code pour ajouter votre vue principale à la fenêtre:

- (void)applicationDidFinishLaunching:(UIApplication *)application {

    // Add the tab bar controller's current view as a subview of the window
    [window addSubview:rootViewController.view]; 
}

C’est ainsi que votre contrôleur de vue principal se rapporte à la fenêtre de votre application. Sans ce code, vous ne verrez qu'une fenêtre vide.

Autres conseils

Si ce n'est pas là, écrivez-le simplement - il n'y a pas de magie. Toutefois, si vous souhaitez que IB suive automatiquement cette évolution, j’estime que l’étape qui vous manque est Fichier - > Écrire des fichiers de classe ; bien que les fusions soient quelque peu gênantes et que j'essaierais de comprendre ce que devrait être là au lieu de compter uniquement sur lui.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top