2013-01-17 13 views
6

Ho un'applicazione che utilizza Storyboard. Su una vista c'è un AlertViewDialog.Apri Storyboard-view manualmente

Quando l'utente fa clic sul primo pulsante ("Sì"), come posso aprire un'altra vista sullo Storyboard?

risposta

10

mio essere questo può aiutare:

  1. Trascinare un Visualizza in Poi vai a Identity Inspector (scorciatoia: opzione + mela + 3).
  2. Selezionare la vista appena trascinata e fornire un nome univoco dall'identificatore di identificazione nel titolo ID di storyboard. // vedere l'immagine di riferimento enter image description here

creare classe SecondViewController (.h & .m) sottoclasse di viewController.

poi dal codice vista avviso (come hai detto quando si fa clic su SI)

incollare il codice di cui qui di seguito

SecondViewController *svc =[self.storyboard instantiateViewControllerWithIdentifier:@"vinay"]; 
     [svc setModalTransitionStyle:UIModalTransitionStyleCoverVertical]; 
     [self presentViewController:svc animated:YES completion:nil]; 

fatemi sapere se si verificano problemi.

+0

GRAZIE! Funziona! –

+0

il benvenuto e grazie per aver gradito il mio post :) –

5

Che questo aiuta:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
ClassNameViewController *viewController = (ClassNameViewController *)[storyboard instantiateViewControllerWithIdentifier:@"viewIdentifierOnStoryboard"]; 
[self presentModalViewController:viewController animated:NO]; 
+0

Peccato, non funziona. Non succede nulla ... –

+0

Hai impostato l'identificatore sulla tua vista e hai usato lo stesso nome dello storyboard? – Tchelow

+0

Ho impostato l'ID Storyboard su "eerstekeer". Selezionato "Usa ID Storyboard", avvio di importazione.h (nomenclatura) e ha utilizzato questo codice: UIStoryboard * storyboard = [UIStoryboard storyboardWithName: @ "MainStoryboard" bundle: nil]; startup * viewController = (startup *) [storyboard instantiateViewControllerWithIdentifier: @ "eerstekeer"]; –

0

La prima cosa che dovete fare è impostare il UIAlertView delegato per fare questo aggiungere UIAlertViewDelegate al @interface modo che appaia come

 @interface myClass : super <UIAlertViewDelegate> 
      // super could be anything like `UIViewController`, etc 
     @end 

e nel @implementation si può quindi aggiunto qualcosa di simile

 @implementation myClass 

     ........... Some code 


     - (IBAction)someActionMethod:(id)sender 
     { 
      UIAlertView *myAlertView = [[UIAlertView alloc] initWithTitle:nil 
                    message:@"Would you like to move on?" 
                   delegate:self 
                 cancelButtonTitle:@"No" 
                 otherButtonTitles:@"Yes", nil]; 
      [myAlertView show]; 
      // [myAlertView release]; Only if you aren't using ARC 
     } 

     - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
     { 
       switch(buttonIndex) { 
        case 1: 
          SecondViewController *svc =[self.storyboard instantiateViewControllerWithIdentifier:@"secondViewController"]; 
          [svc setModalTransitionStyle:UIModalTransitionStyleCoverVertical]; 
     // [self presentViewController:svc animated:YES]; // Deprecated in iOS 6.0 
          [self presentViewController:svc animated:YES completion:nil]; // Introduced in iOS 5.0 
          break; 
        default: 
          break; 
       } 
     } 

     @end 

Ricordarsi di impostare l'identificativo univoco nello storyboard. È possibile farlo andando al tuo .storyboard e in Identity Inspector (selezionando il terzo in) è possibile impostare il Storyboard ID questo è ciò che è necessario abbinare a ciò che è in instantiateViewControllerWithIdentifier quindi nel caso sopra sarebbe "secondViewController". È così semplice

Ricordati di respingere questo punto di vista quando si è fatto è necessario utilizzare

 [self dismissModalViewControllerAnimated:YES]; 

È possibile che questo è stato effettivamente deprecato in iOS 6.0, ma è possibile utilizzare

 [self dismissModalViewControllerAnimated:YES completion:nil]; 

che fa la stessa cosa tranne che aggiunge un blocco di completamento alla fine.

Spero che questo aiuti.