2012-09-05 5 views
5

Mi piacerebbe utilizzare gli storyboard per creare la mia app. Posso trovare molte informazioni su come usarlo con il navigatore o il controllore di schede ma non voglio nessuno di loro.ios segue senza controller di navigazione

Il mio obiettivo è creare un'app con diverse viste ma senza utilizzare una navigazione o un controller di tabulazione. Come faccio?

risposta

2

Perché non li vuoi? Sembra che tu stia lavorando per te stesso.

È possibile avere un controller di navigazione che non ha un'interfaccia utente visibile, è solo responsabile per spingere e scoppiare altri UIViewControllers e quindi il tipo di push following predefinito funzionerà.

Tuttavia, se si proprio non li si desidera è sempre possibile creare un custom segue class e utilizzarlo per gestire lo stack del controller di visualizzazione.

+1

Come si fa a nascondere l'interfaccia utente in Storyboard? E poi come si fa a premere e visualizzare a livello di programmazione ViewControllers? – Crashalot

6

Nello storyboard IOS, se non si desidera utilizzare la navigazione, non è possibile utilizzare push segue. Quindi, puoi utilizzare i passaggi modali o quelli personalizzati. Nel segue modal, ci sono quattro passaggi:

  1. copertura verticali
  2. flip orizzontale
  3. Croce sciogliere
  4. Curl parziale

Tuttavia, tutte queste animazioni predefinite Segue non può segue animazione orizzontale scorrevole preforme. Se si desidera utilizzare l'effetto di scorrimento orizzontale, è necessario utilizzare i passaggi personalizzati. È necessario eseguire l'override della funzione in questo modo:

- (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]; 
       }]; 
} 

Se il problema persiste, è possibile controllare questo post. Essa ha anche un video di YouTube per mostrare come implementare questa segue personalizzato:

Create Push Segue Animation Without UINavigation Controller

+0

ho trovato questa soluzione anche su Internet: http://stackoverflow.com/questions/15139909/auto-layout-screen-rotation-and-uiview-animation/20958850#20958850 – asdfasdfads