¿Cómo agregar una subvista que tiene su propio UIViewController en Objective-C?

Estoy luchando con subvistas que tienen sus propiasUIViewControllers. tengo unUIViewController con una vista (rosa claro) y dos botones en untoolbar. Quiero que se muestre la vista azul cuando se presiona el primer botón y la vista amarilla que se muestra con el segundo botón. Debería ser fácil si solo quisiera mostrar una vista. Pero la vista azul contendrá una tabla, por lo que necesita su propio controlador. Esa fue mi primera lección. Empecé conesta pregunta SO donde aprendí que necesitaba un controlador para la mesa.

Entonces, voy a retroceder y dar algunos pequeños pasos aquí. A continuación se muestra una imagen de un punto de partida simple con mi utilidadViewController (el controlador de vista principal) y los otros dos controladores (azul y amarillo). Imagina eso cuando la UtilidadViewController (la vista principal) se muestra primero la vista azul (predeterminada) se mostrará donde se encuentra la vista rosa. Los usuarios podrán hacer clic en los dos botones para ir y venir y la vista rosada NUNCA se mostrará. Solo quiero que la vista azul vaya donde está la vista rosa y la vista amarilla para ir donde está la vista rosa. Espero que esto tenga sentido.

Estoy tratando de usaraddChildViewController. Por lo que he visto, hay dos formas de hacer esto: la vista de contenedor enstoryboard oaddChildViewController programáticamente Quiero hacerlo programáticamente. No quiero usar unNavigationController o una barra de pestañas. Solo quiero agregar los controladores y colocar la vista correcta en la vista rosa cuando se presiona el botón asociado.

A continuación se muestra el código que tengo hasta ahora. Todo lo que quiero hacer es mostrar la vista azul donde está la vista rosa. Por lo que he visto, debería ser capaz deaddChildViewController y addSubView. Este código no está haciendo eso por mí. Mi confusión es sacar lo mejor de mí. ¿Alguien puede ayudarme a mostrar la vista azul donde está la vista rosa?

Este código no pretende hacer nada más que mostrar la vista azul en 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

--------------------------EDITAR----------------------- -------

Self.aboutVC.aboutView es nil. Pero lo conecté en elstoryboard. ¿Todavía necesito instanciarlo?

Respuestas a la pregunta(2)

Su respuesta a la pregunta