En primer lugar, no es necesario definir la toma view
en la clase HeadViewController
. Se hereda automáticamente de la superclase UIViewController
.
Luego, le sugiero que agregue directamente la vista de HeadViewController
a su vista actual. P.ej.
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
HeadViewController *headViewController = [[HeadViewController alloc] initWithNibName:@"HeadViewController" bundle:nil];
headViewController.view.frame = CGRectMake(0, 0, 320, 120);
[self.view addSubview:headViewController.view];
}
Pero, si está utilizando ARC (automático de recuento de referencia), la instancia headViewController
probablemente cancelar la asignación después del final del método viewDidLoad
. Es conveniente (y yo diría que es obligatorio) asignar esa instancia a una variable local en el controlador que está mostrando actualmente. De esta manera, podrá manejar los componentes de su vista más adelante si es necesario, se retendrá la instancia y todo lo demás funcionará perfectamente. Usted debe tener algo como:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
self.headViewController = [[HeadViewController alloc] initWithNibName:@"HeadViewController" bundle:nil];
headViewController.view.frame = CGRectMake(0, 0, 320, 120);
[self.view addSubview:headViewController.view];
}
y
@interface MyController()
@property (nonatomic, strong) HeadViewController *headViewController;
@end
en la definición de interfaz oculta al inicio del archivo de implementación .m
clase.
Te corrijo: headViewController.view es nulo, si no se agrega como subvista. Necesito cambiar la vista auxiliar y establecer el marco – NeverBe
Verifique mi actualización sobre ARC. Si 'headViewController.view' es' nil', compruebe dos veces la conexión de la vista con el controlador en el archivo de punta. ¿Es 'nil' solo dentro de este método (problema de salida) o después de que haya terminado (problema de ARC)? – marzapower
Cambié el código, tal como me dijiste, y defino una vista porque elimino la predeterminada. Y todavía no hay headViewController.view ... estoy confundido. – jxdwinter