Comment ajouter un sous-vue qui a son propre UIViewController en Objective-C?

J'ai du mal avec les sous-vues qui ont leur propre UIViewControllers. J'ai un UIViewController avec une vue (rose clair) et deux boutons sur un toolbar. Je veux le bleu de l'affichage lorsque le premier bouton est pressé et le jaune d'affichage avec le deuxième bouton est pressé. Devrait être facile si je voulais juste pour l'afficher. Mais le bleu de la vue contient un tableau, donc il a besoin de son propre contrôleur. C'était ma première leçon. J'ai commencé avec cette SORTE de question où j'ai appris j'ai besoin d'un contrôleur de la table.

Donc, je vais sauvegarder et de prendre des mesures pour bébés ici. Ci-dessous est une photo d'un simple point de départ avec mon Utilitaire ViewController (la principale-vue-contrôleur) et les deux autres contrôleurs (bleu et jaune). Imaginez que lorsque l'Utilitaire ViewController (l'écran principal) s'affiche d'abord le bleu (par défaut) sera affiché à l'endroit où le rose de la vue. Les utilisateurs seront en mesure de cliquer sur les deux boutons pour faire l'aller-retour et le rose de la vue ne sera JAMAIS affichée. Je veux juste le bleu de la vue à aller là où le rose vue est et le jaune d'affichage pour aller là où la rose de point de vue est. J'espère que cela a du sens.

Comment ajouter un sous-vue qui a son propre UIViewController en Objective-C?

Je suis en train d'utiliser addChildViewController. De ce que j'ai vu, il y a deux façons de le faire: Le Conteneur de Vue dans le storyboard ou addChildViewController par programmation. Je veux le faire par programmation. Je ne veux pas utiliser un NavigationController ou une barre d'Onglet. Je veux juste ajouter que les contrôleurs et les pousser à la vue correcte dans le rose de la vue lorsque la touche est pressée.

Ci-dessous le code que j'ai jusqu'ici. Tout ce que je veux faire, c'est afficher le bleu de la vue où le rose point de vue est. De ce que j'ai vu, je devrais être en mesure de simplement addChildViewController et addSubView. Ce code n'est pas fait pour moi. Ma confusion est de mettre le meilleur de moi. Quelqu'un peut-il m'aider à obtenir le bleu de l'affichage de la vue où le rose vue est?

Ce code n'est pas destiné à faire autre chose que d'afficher le bleu de l'afficher dans le viewDidLoad.

IDUtilityViewController.h

#import <UIKit/UIKit.h>

@interface IDUtilityViewController : UIViewController
@property (strong, nonatomic) IBOutlet UIView *utilityView;
@end

IDUtilityViewController.m

#import "IDUtilityViewController.h"
#import "IDAboutViewController.h"

@interface IDUtilityViewController ()
@property (nonatomic, strong) IDAboutViewController *aboutVC;
@end

@implementation IDUtilityViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.aboutVC = [[IDAboutViewController alloc]initWithNibName:@"AboutVC" bundle:nil];
    [self addChildViewController:self.aboutVC];
    [self.aboutVC didMoveToParentViewController:self];
    [self.utilityView addSubview:self.aboutVC.aboutView];
}

@end

--------------------------MODIFIER------------------------------

L'auto.aboutVC.aboutView est nul. Mais j'ai câblé dans le storyboard. Dois-je encore besoin d'instancier?

Comment ajouter un sous-vue qui a son propre UIViewController en Objective-C?

  • Quel est le réel problème que vous rencontrez?
  • Lorsque le point de vue des charges, je vois la rose vue. Je suppose que je ne dois pas être le codage correctement.
  • À droite, OK. Tout d'abord, l'étape à travers le code d'une ligne à la fois et assurez-vous qu'aucun des objets sont nil. Specificalyl auto.aboutVC, de soi.utilityView et l'auto.aboutVC.aboutView.
  • Vous êtes correct. Le soi.aboutVC.aboutView est nul. Mais j'ai câblé le tout dans le storyboard. Je vais mettre à jour ma question avec l'image.
  • Ce qui est ur premier bouton et quel est votre deuxième bouton? Et quand u dire la blueview où la rose est...ne u veux dire une fois que le blueview est sur l'écran—encore le 'X' et '?' Sont accrochés là dans le haut de la vue?
InformationsquelleAutor Patricia | 2014-04-30