2011-05-01 7 views

Respuesta

2

aquí hay algunos códigos que muestran el proceso. Puede pegar este código en el delegado de la aplicación para ejecutar. Tenga en cuenta que este es el código de spaghetti, pero lo hice de esta manera para que pueda ver todos los pasos en un solo lugar. Normalmente, colocará partes de este código en su propio controlador de vista y clases.

esto está en el appdelegate .. tenga en cuenta que esto no está completamente probado para fugas y esas cosas ... es para un ejemplo.

@synthesize tabViewController; 


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 


    UIWindow *w = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen] bounds]];; 
    self.window = w; //property defined in the .h file 
    [w release]; 


    //create the tab bar controller 
    UITabBarController *tbc = [[UITabBarController alloc]init]; 
    self.tabViewController = tbc; 
    [w addSubview:tbc.view]; 

    //create the two tabs 
    NSMutableArray *a = [[NSMutableArray alloc]init]; 

    //create the first viewcontroller 
    UIViewController *vca = [[UIViewController alloc]init]; 
    vca.view.backgroundColor = [UIColor redColor]; 
    vca.title = @"View A"; 
    [a addObject:vca]; 
    [vca release]; 

    //and the second 
    UIViewController *vcb = [[UIViewController alloc]init]; 
    vcb.view.backgroundColor = [UIColor blueColor]; 
    vcb.title = @"View B"; 
    [a addObject:vcb]; 
    [vcb release]; 

    //assign the viewcontrollers to the tabcontroller 
    tbc.viewControllers=a; 

    //release the array now that its retained by the tabcontroller 
    [a release]; 
    [tbc release]; //tabbarcontroller is retained by our property 


    UIViewController *vcc = [[UIViewController alloc]init]; //this is the popup view 
    vcc.view.backgroundColor = [UIColor whiteColor]; 
    UIButton *b = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    b.titleLabel.text = @"Click here"; 
    [b addTarget:self action:@selector(buttonDismiss:) forControlEvents:UIControlEventTouchUpInside]; //hook into the buttons event 
    b.frame = CGRectMake(10, 10, 300, 40); 
    [vcc.view addSubview:b]; //add it to the popup view 



    [tbc presentModalViewController:vcc animated:YES]; 

    [self.window makeKeyAndVisible]; 
    return YES; 
} 

-(void) buttonDismiss:(UIButton *)sender 
{ 
    [self.tabViewController dismissModalViewControllerAnimated:YES]; 

} 
+0

¿necesito instanciar las vistas dentro de la pestaña allí (verA y verB en su código)? Ya tengo la aplicación creada como una barra de pestañas y todas las vistas en ella. Solo quiero mostrar una vista antes de que el usuario vea la aplicación real. – irco

+0

En realidad, veo lo que quieres decir ahora. ¡muchas gracias! – irco

0

Use un UIViewController. Presente ese controlador como una vista modal con el controlador de la barra de pestañas. Descartar el controlador de vista después de eso para ocultarlo

+0

bien ... ¿dónde hago eso? ¿Dónde hago una instancia de esto? ¿Dónde lo digo para mostrar? y ¿dónde le cuento la pestaña regular con las otras vistas para mostrar cuando descarto la vista inicial? – irco

+0

@irco Un controlador de vista modal muestra * encima de * sus otras vistas. Es capaz de desestimarse por sí mismo, por lo que no debería preocuparse por la última mitad de sus preguntas. En cuanto a cuándo crear una instancia y mostrarla, puede hacer eso en el método 'viewDidAppear' de su controlador de vista. Solo 'alloc' y' init' un nuevo VC y dile al VC actual que presente este nuevo como controlador de vista modal. –

Cuestiones relacionadas