ios view storyboard

ios - Añadir subvista desde un xib u otra escena con guión gráfico



load xib swift 4 (2)

Soy nuevo en iOS y Xcode. No puedo averiguar cómo diseñar una vista separada y hacer que se agregue al controlador UIView principal mediante el guión gráfico.

Hice diferentes enfoques ..

  1. Solo toma un objeto UI desde la ventana de la esquina inferior derecha del código x, y luego colócalo en cualquier área de espacio del guión gráfico. Pero no puedo dejar caer el objeto UI como con xib.
  2. Añadir un nuevo UIViewController. Añadir una vista en el UIViewController . En el ViewController.m principal, obtengo la nueva instancia de UIViewController en viewDidLoad, y luego [self.view addSubview:newUIViewController.view] . Pero no puedo ver la vista agregada.
  3. He creado un nuevo archivo xib. Y añadir una vista en ella. También trato de obtener la instancia en el ViewController principal. Y addSubview con la vista del xib. Pero también falló.

¿Hay una forma correcta o alguna solución de trabajo para hacerlo?


Descubrí una manera de hacerlo. Descrito de la siguiente manera:

  1. Crea un archivo .xib. Por ejemplo: MyView.xib
  2. Crear una clase de objetivo-c. Por ejemplo: MyViewClass.h y MyViewClass.m
  3. Establecer el propietario del archivo .xib a la clase.
  4. Agregue un elemento UIView en el guión gráfico y establezca la clase personalizada al nombre de la clase object-c (MyViewClass).
  5. El punto clave es anular el método initWithCoder en la clase object-c.

    - (id)initWithCoder:(NSCoder *)aDecoder { if ((self = [super initWithCoder:aDecoder])) { [self addSubview:[[[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil] objectAtIndex:0]]; } return self; }

La idea es que la clase personalizada se cargue en el guión gráfico y se llamará a initWithCode. El índice 0 es la vista raíz en el constructor de interfaces .xib.

Es un poco complicado pero funciona.


En el guión gráfico, arrastre y suelte un controlador de vista. El controlador de vista viene con una vista principal. Seleccione esa vista principal haciendo clic fuera del controlador de vista agregado y luego haciendo clic en el centro de la misma. Ahora, simplemente arrastre una vista en pantalla o lo que sea a esa vista principal tal como lo hizo con IB.