¿Cómo puedo (re) utilizar la misma plumilla en múltiples controladores de Vista
-
19-09-2019 - |
Pregunta
Está bien que acaba de escribir toda esta cuestión y luego se las arregló para eliminarlo. Suspiro. De todos modos, la divulgación estándar que he buscado por todas partes y se golpeó la cabeza en el teclado y no puede resolver esto.
Estoy construyendo una aplicación básica basada en la plantilla de aplicación de utilidad (con un MainViewController y FlipsideViewController). Nota al margen: Todavía no entiendo el propósito de MainView y FlipsideView en este esquema por lo que si alguien puede explicar que no sería demasiado terrible: D
De todos modos, en la parte inferior de ambos puntos de vista quiero tener una barra de herramientas. Era bastante fácil añadir que a una vista determinada con IB, pero quiero que la barra de herramientas para tener su propio controlador y el modelo porque quiero mantener su estado consistente a través de los dos puntos de vista. De acuerdo con ello me gustaría que cargar vista desde una punta, pero parece que estoy haciendo algo mal. Seguí el consejo aquí: NSViewController y múltiples subvistas de una punta, pero obviamente borked hacia arriba de modo más penetración sería apreciada.
Lo hice las siguientes cosas: He creado ToolBarViewController que es básicamente vacío pero es el propietario del archivo de ToolBar.xib. Dentro ToolBar.xib Tengo una visión con un marco del tamaño de la barra de herramientas y en el interior que una barra de herramientas. En MainView.xib Tengo un elemento de la vista del mismo tamaño que está conectado a toolBarView encuentra en el código de abajo ...
En MainViewController.h:
#import "ToolBarViewController.h"
@interface MainViewController : UIViewController <FlipsideViewControllerDelegate, MKMapViewDelegate> {
...
ToolBarViewController *toolBarViewController;
IBOutlet UIView *toolBarView;
}
...
@property(nonatomic, retain) ToolBarViewController *toolBarViewController;
@property(nonatomic, retain) IBOutlet UIView *toolBarView;
En MainViewController.m:
@synthesize toolBarViewController;
@synthesize toolBarView;
- (void)loadView
{
[super loadView];
toolBarViewController = [[ToolBarViewController alloc] initWithNibName:@"ToolBar" bundle:nil];
[[toolBarViewController view] setFrame:[toolBarView frame]];
[[self view] replaceSubview:toolBarView with:[toolBarViewController view]];
}
Cuando generar y ejecutar consigo la advertencia para la última línea por encima de ese 'UIView' puede no responder a 'replaceSubview: con' y en el funcionamiento que la excepción siguiente: *** - [replaceSubview MainView: con:]: Selector no reconocido enviado a la instancia 0x450c540
Puede alguien explicar lo que estoy haciendo mal? Gracias a
Solución
No hay un método tal como [UIView replaceSubview: con:]. Eso es un método NSView. Usted debería haber recibido una advertencia acerca de esto cuando se ha compilado.
Para hacer la misma cosa, que había necesidad de utilizar [[self view] insertSubview:aboveSubview:]
y luego [toolbarView removeFromSuperview]
.
Dicho esto, no estoy seguro si esto es lo que desea meterse con la barra de herramientas. Probablemente me probar algo más como:
self.toolbarItems = [toolbarViewController toolbarItems];
Otros consejos
Eso es porque no hay tal replaceSubview UIView: con: (hay un método así para NSView en el Mac, sin embargo)
.Recuerde que las advertencias de Objective-C suelen ser errores;), en general, tiendo a no dejarlos sin tratamiento, e incluso que los convierten en errores: http://akosma.com/2009/07/16/objective -c-compilador advertencias /