2012-09-05 12 views
5

Me gustaría utilizar storyboards para crear mi aplicación. Puedo encontrar mucha información sobre cómo usarlo con el navegador de navegación o tabulador, pero no quiero ninguno de ellos.ios segues without navigationcontrollers

Mi objetivo es crear una aplicación que tenga vistas diferentes pero sin usar un navegador de navegación o tabcontroller. ¿Cómo lo hago?

Respuesta

2

¿Por qué no los quiere? Parece que estás haciendo un trabajo para ti.

Puede tener un controlador de navegación que no tenga una interfaz de usuario visible, solo es responsable de presionar y hacer estallar otros controles UIViewControllers y, a continuación, el tipo predeterminado de selección de inserción simplemente funcionará.

Sin embargo, si realmente no quiere que siempre se puede hacer una custom segue class y usar eso para gestionar ve pila controlador.

+1

¿Cómo ocultar la interfaz de usuario en el guión gráfico? ¿Y luego cómo presionas y haces pop-ups de ViewControllers? – Crashalot

6

En el guión gráfico de IOS, si no desea utilizar la navegación, no puede usar la inserción de inserción. Luego, puede usar segue modal o segue personalizado. En segue modal, hay cuatro transiciones:

  1. vertical de la cubierta
  2. vuelta horizontal
  3. Cruz Disolver
  4. Curl parcial

Sin embargo, todas estas animaciones segue predefinidos no pueden preforma la animación horizontal deslizante segue. Si desea usar el efecto deslizante horizontal, debe usar segue personalizado. Debe anular la función de esta manera:

- (void) perform 
{ 
UIViewController *desViewController = (UIViewController *)self.destinationViewController; 

UIView *srcView = [(UIViewController *)self.sourceViewController view]; 
UIView *desView = [desViewController view]; 

desView.transform = srcView.transform; 
desView.bounds = srcView.bounds; 

if(isLandscapeOrientation) 
{ 
    if(isDismiss) 
    { 
     desView.center = CGPointMake(srcView.center.x, srcView.center.y - srcView.frame.size.height); 
    } 
    else 
    { 
     desView.center = CGPointMake(srcView.center.x, srcView.center.y + srcView.frame.size.height); 
    } 
} 
else 
{ 
    if(isDismiss) 
    { 
     desView.center = CGPointMake(srcView.center.x - srcView.frame.size.width, srcView.center.y); 
    } 
    else 
    { 
     desView.center = CGPointMake(srcView.center.x + srcView.frame.size.width, srcView.center.y); 
    } 
} 


UIWindow *mainWindow = [[UIApplication sharedApplication].windows objectAtIndex:0]; 
[mainWindow addSubview:desView]; 

// slide newView over oldView, then remove oldView 
[UIView animateWithDuration:0.3 
       animations:^{ 
        desView.center = CGPointMake(srcView.center.x, srcView.center.y); 

        if(isLandscapeOrientation) 
        { 
         if(isDismiss) 
         { 
          srcView.center = CGPointMake(srcView.center.x, srcView.center.y + srcView.frame.size.height); 
         } 
         else 
         { 
          srcView.center = CGPointMake(srcView.center.x, srcView.center.y - srcView.frame.size.height); 
         } 
        } 
        else 
        { 
         if(isDismiss) 
         { 
          srcView.center = CGPointMake(srcView.center.x + srcView.frame.size.width, srcView.center.y); 
         } 
         else 
         { 
          srcView.center = CGPointMake(srcView.center.x - srcView.frame.size.width, srcView.center.y); 
         } 
        } 
       } 
       completion:^(BOOL finished){ 
        //[desView removeFromSuperview]; 
        [self.sourceViewController presentModalViewController:desViewController animated:NO]; 
       }]; 
} 

Si aún tiene problemas, puede consultar esta publicación. También cuenta con un video de youtube que le muestre cómo implementar este segue personalizado:

Create Push Segue Animation Without UINavigation Controller

+0

También encontré esta solución en Internet: http://stackoverflow.com/questions/15139909/auto-layout-screen-rotation-and-uiview-animation/20958850#20958850 – asdfasdfads

Cuestiones relacionadas