loadNibNamed de initWithNibName VS NSBundle
-
19-09-2019 - |
Pregunta
Me he dado cuenta de que hay dos maneras diferentes para cargar archivos nib / xib:
- a través del método de la
initWithNibName:bundle:
UIView -
loadNibNamed:owner:options:
método de NSBundle.
Puede alguien explicar las diferencias entre estos dos y cuando es más apropiado utilizar una sobre la otra y en qué circunstancias?
Por ejemplo, si estoy cargando una vista en sección de encabezado de tabla personalizada desde un archivo semilla en el tableView: viewForHeaderInSection:? El método, que se podría usar
O, si lo estaban cargando una vista celda de la tabla personalizada desde un archivo de punta, que se iba a usar?
Solución
Los métodos de NSBundle
son la API genérica que se utilizará para desarchivándolos ONE. Ellos hacen el trabajo real (junto con NSNib
).
UIViewController
de initWithNibName:bundle:
por otro lado es una manera de inicializar un controlador de vista que (puede) cargar su vista desde una punta. El método en sí no cargar la punta, pero sólo toma nota del nombre. El controlador carga el plumín perezosamente cuando se solicita la vista.
No estoy al tanto de cualquier carga punta en UIView
.
Otros consejos
Si controlador de vista de su cabecera contiene IBOutlets a cualquiera de los campos en el archivo semilla que será mejor archivo cargar la punta en lugar de llamar initWithNib.
En el controlador de vista del archivo de cabecera modificar la instrucción de iniciación como la siguiente declaración por defecto .La está comentada.
Al hacerlo, usted será capaz de acceder a los campos en el archivo de la semilla utilizando los IBOutlets.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
//self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
// Custom initialization.
if ([[NSBundle mainBundle] loadNibNamed:@"NibFile" owner:self options:nil]) {
}
return self;
}