Creo que me falta algo fundamental y por eso quiero pedir ayuda a la comunidad. Estoy construyendo una aplicación basada en una aplicación de utilidad básica de iPhone. Mi MainView y FlipsideView comparten algunos elementos, así que he creado ViewControllers y archivos de punta separados para esas piezas. Para hacer esto, he hecho lo siguiente: 1. Creé un controlador de visualización llamado searchDateViewController que es el propietario del archivo de searchDateView.xib 2. searchDateView.xib es básicamente una UIView con un UILabel adentro, la vista está conectada correctamente 3. Dentro tanto MainViewController.m y FlipsideViewController.m agrego una subvista como folllows:superview y parentviewcontroller nil después de agregar una subvista
- (void)loadView{
[super loadView];
searchDateViewController = [[SearchDateViewController alloc] initWithNibName:@"SearchDateView" bundle:nil];
[[searchDateViewController view] setFrame:[searchDateView frame]];
[[self view] addSubview:[searchDateViewController view]];
...
}
Todo pantallas y funciona muy bien. Básicamente, dependiendo de las acciones que suceden en cada una de las vistas principal y lateral, se cambia el UILabel de la punta. Sin embargo, quería hacer algo ligeramente diferente si searchDateViewController se carga desde MainView o FlipsideView. Sin embargo, no puedo entender qué ViewController está agregando la subvista searchDateViewController.
En searchDateViewController me trataron:
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"superview %@", self.view.superview);
NSLog(@"parentviewcontroller %@", self.parentViewController);
}
En ambos casos me sale nula.
Así que mi pregunta es: ¿puedo averiguar qué ViewController está agregando searchDateViewController en una subvista? ¿Si es así, cómo? O si mi lógica aquí está completamente desordenada, ¿cómo debería estar haciendo esto?
Gracias!
De acuerdo, gracias por apuntarme en la dirección correcta con respecto a las subvistas y las subclases UIViewController. Si hago de SearchDateViewController una subclase de NSObject, ¿cómo va a afectar la forma en que estoy agregando las subvistas y comenzando con el plumín? No he encontrado ejemplos de subvistas como nsobjects en lugar de viewcontrollers, pero quiero comenzar a adoptar cualquier práctica estándar en este caso. Avísame si tienes más consejos, ¡gracias! Además, ambos sugirieron usar parentcontroller, lo cual tiene sentido, pero ¿qué papel desempeña Superview? ¿Sería eso más apropiado aquí? – deadroxy
Convertir SearchDateViewController en una subclase de NSObject no elimina su problema, simplemente evita problemas futuros porque UIViewControllers no están destinados a ser utilizados para vistas que no ocupan toda la ventana en mi humilde opinión. Para resolver su problema, su código de personalización de vista no debe depender de self.parentViewController o view.superview en absoluto. En su lugar, defina una propiedad en SearchDateViewController (podría ser un BOOL o una enumeración) que luego consulta para decidir cómo personalizar la vista. El objeto que crea SearchDateViewController debe establecer la propiedad. –
Hice exactamente lo que dijiste al crear una propiedad en la clase SearchDateViewController que funcionó bien. Sin embargo, todavía estoy desconcertado sobre cómo hacer la transición de la subclase de UIViewController a UIView/NSObject. Específicamente, ¿quién se convierte en el propietario del archivo de SearchDateView? Intenté de todas maneras y todo lo que hice dio como resultado errores ... – deadroxy