Pregunta

Me he dado cuenta de que hay dos maneras diferentes para cargar archivos nib / xib:

  1. a través del método de la initWithNibName:bundle: UIView
  2. 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?

¿Fue útil?

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;
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top