Normalmente creo mis vistas personalizadas de forma programática y las intento para que se inicialicen también programáticamente con métodos init personalizados (por ejemplo, initWithFrame: SomeParam: OtherParam). ¿Es posible usar esas vistas personalizadas en combinación con un archivo xib? Es decir, ¿tiene un archivo xib principal que tiene varias de estas vistas personalizadas como subvistas en las que estas subvistas pueden necesitar un método init diferente?Vistas personalizadas de iOS en archivos xib
Respuesta
Si agrega vistas personalizadas en un archivo xib, no se puede utilizar un inicializador personalizado. Todos serán inicializados usando initWithCoder
.
Normalmente harías cualquier configuración en un método común llamado desde allí o en awakeFromNib
.
Si necesita establecer propiedades personalizadas en su vista que se originan desde fuera de él, hágalo en viewDidLoad
de su controlador de vista.
por supuesto es posible. arrastre una uiview en el xib no dentro de la vista predeterminada. luego haga un IBOutlet UIView *myCustomView;
y luego conéctelo con la otra vista. cuando u desea mostrar esta vista añadir esto como [self.view addSubview:myCustomView];
cuando quiera quitarlo
[myCustomView removeFromSuperView];
Entonces ... ¿qué tal initWithSomeValue: value function? – Carina
Esto no funcionará si quiere compartir, digamos una vista de encabezado personalizado en múltiples archivos XIB ... Debería redefinirlo exactamente en cada xib – LightningStryk
Obtenga el xib de la vista inicializado de la manera habitual y utilizando la referencia haga la configuración personalizada. esta parte se puede poner en el método init así-
-(void)initfunction{
UIView *containerView = [[[NSBundle mainBundle] loadNibNamed:@"myView" owner:self options:nil] lastObject];
containerView.property1 = xyz;//Customization
containerView.property2= abc;//Customization
containerView.frame = CGRectMake(x,y,z,p);//Customization
[rootView addSubview:containerView];
}
el punto es cuando usamos un xib que no inicializan de manera explícita, las funciones de utilidad xib
devuelven un objeto inicializado (de UIView
), después se tiene la UIView
objeto, él/ella puede usar el objeto inicializado como solo un objeto regular para hacer más cambios personalizados.
Las clases UINib (iOS) y NSNib (OS X) proporcionan un mejor rendimiento en situaciones en las que desea crear múltiples copias de los contenidos de un archivo de punta. El proceso normal de carga de plumillas implica leer el archivo plumín desde el disco y luego crear instancias de los objetos que contiene. Sin embargo, con las clases UINib y NSNib, el archivo nib se lee del disco una vez y los contenidos se almacenan en la memoria. Debido a que están en la memoria, crear conjuntos sucesivos de objetos lleva menos tiempo porque no requiere acceder al disco.
- Crear un archivo de vista xib: Haga clic derecho en el proyecto -> New File -> Interfaz de usuario -> Ver (por ejemplo, tendrá "MyView.xib")
- llenar la vista usando el Interface Builder
Añadir siguiente método para que los padres componente
static UINib *nib = nil; - (UIView*)createNewViewFromNib: (NSString *)nibFileName { if(nib == nil) { nib = [UINib nibWithNibName:nibFileName bundle:nil ]; } // Unarchiving objects from the nib. You can do it multiple times to create a number of objects from same nib. NSArray* topLevelObjs = [nib instantiateWithOwner:self options:nil]; if (topLevelObjs == nil) { NSLog(@"Warning! Could not load nib file.\n"); return nil; } // We have only one view in the nib. return [topLevelObjs objectAtIndex:0]; }
uso siguiente línea de código para crear una instancia permite ver con objeto reutilizable plumín:
UIView *item = [self createNewViewFromNib:@"MyView"]; // [self.view addSubview:item];
- 1. iOS Archivo Localizable.strings para archivos XIB?
- 2. Revertir Xcode 4.5 nuevos archivos XIB a iOS <6
- 3. iOS: cómo crear vistas de forma programática utilizando XIB, pero sin usar View Controller
- 4. dificultad xib Localización de Archivos
- 5. ¿Cómo heredar un archivo XIB en un proyecto de iOS?
- 6. Cómo referenciar archivos XIB de un XIB principal
- 7. Convertir archivos NIB a archivos XIB
- 8. Múltiples vistas dentro de un XIB - SDK de iPhone
- 9. y cargando archivos NIB/XIB?
- 10. (Vibrating TextView) Configurar atributos para vistas personalizadas
- 11. Xcode muestra antiguos archivos borrados, xib
- 12. Android: atributos predeterminados para vistas personalizadas
- 13. Problema al utilizar archivos xib en bibliotecas
- 14. Etiquetas personalizadas en archivos UiBinder
- 15. iPhone de localización de archivos xib
- 16. Vistas personalizadas de Android en Eclipse Visual Editor
- 17. ¿Utiliza los formularios rails_admin en las vistas personalizadas?
- 18. Problema con archivos xib para iPad universal
- 19. ¿Por qué no utilizar archivos XIB?
- 20. Objetivo C Vistas de precarga de iOS
- 21. Mezcla mapas de Google superposiciones personalizadas con Backbone Vistas
- 22. Primeros pasos para crear transiciones de vistas personalizadas
- 23. Plantillas T4 personalizadas de ASP.NET MVC para vistas
- 24. Archivos XIB vs. Definición de diseño en el código en el iPhone
- 25. IOS arrastre y suelte entre las vistas de desplazamiento
- 26. Las fuentes personalizadas no se muestran correctamente en iOS
- 27. nuevo xib en xcode4
- 28. Alertas personalizadas de JavaScript en iOS usando PhoneGap HTML
- 29. Usa guiones gráficos en un proyecto que tenga archivos .xib: iPhone
- 30. Creación mediante programación de vistas en IOS (¿cómo funciona)?
Si necesito hacer algo antes de verDidLoad de mi controlador de vista, cómo hacerlo eso ? Entonces ejemplo ... Mi vista se usa para mostrar una página de un libro.Sin el método init personalizado como initWithPage: page, al mismo tiempo también uso el guión gráfico. Antes – Carina
viewDidLoad, no existe la vista. Basta con mover la configuración que se hace en initWith ... en un método diferente y hacer los cambios que necesita allí, después de establecer la propiedad. – jrturton