2012-04-15 31 views
12

He encapsulado toda mi lógica de vista de tabla en un UITableViewController que está vinculado a una vista. Esto fue hecho usando storyboards.Cómo subestar un UITableViewController dentro de otro controlador usando Storyboards

me gustaría incrustar esta lógica y vista dentro de otra vista controlador/vista

I tienen los siguientes componentes (como una especie de la información de cabecera con una mesa desplazable debajo.): CustomViewController que está vinculada a una UIView (arrastrado desde guión gráfico) CustomTableViewController que está vinculada a un UITableView (arrastrado desde guión gráfico)

Esencialmente estoy tratando de imitar el escenario del Cronómetro en la aplicación de reloj iOS

  • ¿Cuál es el enfoque bestial para esto?
  • ¿Cómo se hace programáticamente?
  • ¿Se puede hacer esto en el guión gráfico de alguna manera?

Cualquier ayuda sería muy apreciada. Gracias

+0

No entiendo muy bien ... ¿Desea agregar un UIViewController como subvista? – CodaFi

+1

"enfoque bestia", rawr! – pfrank

Respuesta

25

Ok lo descubrí. Esta solución es específica para iOS 5 ya que esta función se agregó allí. Este método funciona con guiones gráficos.

Configuración: la intención es alojar una vista de controladores de vista y lógica dentro de otro controlador.

  1. Puesto que no hay manera intrínseca para hacer referencia al controlador de vista niño en el guión gráfico, necesitamos para dar el controlador de vista un nombre. Esto puede hacerse completando el atributo "Identificador" en el controlador en el guión gráfico. NOTA: Asegúrese de darle al controlador el identificador y no la vista de los controladores.

  2. Cree una instancia del controlador que desea agregar. Esto se puede hacer desde el controlador de alojamiento.

    UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"ControllerIdentifier"]; 
    
  3. Agregar el controlador niño al controlador padres

    [self addChildViewController: controller]; 
    
  4. Añadir el niño controladores de vista a la vista de los controladores de los padres. Tenga en cuenta que si tiene una vista de marcador de posición en el controlador principal al que desea agregar la vista secundaria, entonces es aquí donde lo hace. Aquí lo agrego a la etapa llamada UIView en el controlador principal.

    [self clearStage]; 
    [self.stageView addSubview:controller.view]; 
    presentedController.view.frame = self.stageView.bounds; 
    

Y eso es todo. Bastante simple. Lo he utilizado con éxito con la conmutación de controladores y la vista en un control de pestañas hecho en casa. El controlador secundario incluye sus vistas en el ciclo de vida de la vista, por lo que viewDidLoad, etc. funcionan como se esperaba en este controlador de vista secundaria.

Espero que esto ayude a alguien.

Cuestiones relacionadas