2011-11-13 11 views
6

Tengo una barra de pestañas que se crea mediante programación y tengo dificultades para inicializar un guión gráfico asociado a una vista.¿Crea una barra de pestañas programática con controladores de visualización de guiones gráficos?

Puedo cargar la vista correctamente en la barra de pestañas sin el guión gráfico (vea el código a continuación) pero la vista solo se muestra parcialmente porque algunos de los componentes de la IU están en el guión gráfico.

El nombre de mi guión gráfico es MainStoryboard y configuré el identificador de la vista del guión gráfico en SettingsViewController.

¿Cómo puedo inicializar mi guión gráfico para SettingsViewController en el código siguiente?

- (void)createTabBarItems { 
    tabBarController = [[UITabBarController alloc] init]; 

    settingsViewController = [[SettingsViewController alloc] init]; 


    UINavigationController *sett = [[[UINavigationController alloc] 
            initWithRootViewController: settingsViewController] autorelease]; 

    [sett.tabBarItem setTitle:@"Settings"]; 
    [sett.tabBarItem setImage:[UIImage imageNamed:@"settings.png"]]; 

    [tabBarController setViewControllers: 
     [NSArray arrayWithObjects:sett, sett, sett, sett, nil]]; 
} 

Respuesta

16

Si desea inicializar el controlador de vista como en el guión gráfico que tiene que utilizar los métodos de guión gráfico en lugar de asignar el controlador de vista directa:

// load the storyboard by name 
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 

// either one of the two, depending on if your view controller is the initial one 
settingsViewController = [storyboard instantiateInitialViewController]; 
settingsViewController = [storyboard instantiateViewControllerWithIdentifier:@"SettingsViewController"]; 
+0

I recibido un error en la primera línea de su código "No conocido método de clase para el selector 'storyBoardWithName:'". Así que agregué "paquete: nada" a la primera línea de tu código. Ahora recibo el error: "Impulsar un controlador de navegación no es compatible" ¿Qué puedo hacer para corregir el error y he hecho lo correcto al agregar "paquete: nada"? – kevin

+0

Está funcionando ahora ... Tenía algo del código mezclado. ¡Gracias! – kevin

+0

Gracias, el parámetro del paquete realmente no estaba, lo corregí. 'bundle: nil' está bien porque hará la búsqueda en el paquete principal. –

0

Swift 4

let storyboard = UIStoryboard(name: "Main", bundle: nil) 
settingsViewController = storyboard.instantiateInitialViewController() 
settingsViewController = storyboard.instantiateViewController(withIdentifier: "SettingsViewController") 
Cuestiones relacionadas