2012-06-07 13 views

risposta

86

Se siete in un controller di navigazione:

ViewController *viewController = [[ViewController alloc] init]; 
[self.navigationController pushViewController:viewController animated:YES]; 

o se volete semplicemente per presentare una nuova visione:

ViewController *viewController = [[ViewController alloc] init];  
[self presentViewController:viewController animated:YES completion:nil]; 
+3

Solo per notare che 'presentModalViewController: animated:' è stato contrassegnato come deprecato nei [documenti UIViewController] (http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference. html). 'presentViewController: animated: completion:' dovrebbe invece essere usato. –

+1

Aggiornato per riflettere. – SlateEntropy

+2

Sono solo a questa domanda, se uso la seconda soluzione potrò tornare alla vista precedente e come? – user2533527

1
[self.navigationController pushViewController:someViewController animated:YES]; 
+1

Questo non funziona per me, importa che sto facendo nella tabellaView: didSelectRowAtIndexPath: method? – mishajw126

33

Se si desidera presentare una nuova vista a lo stesso storyboard,

In CurrentViewController.m,

#import "YourViewController.h" 

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
YourViewController *viewController = (YourViewController *)[storyboard instantiateViewControllerWithIdentifier:@"YourViewControllerIdentifier"]; 
[self presentViewController:viewController animated:YES completion:nil]; 

Per impostare l'identificatore su un controller di visualizzazione, Aprire MainStoryBoard.storyboard. Seleziona YourViewController Visualizza-> Utilità -> ShowIdentityInspector. Qui puoi specificare l'identificatore.

+0

In questo modo vengono visualizzate viste continue finché si preme una riga in una cella DynamicTableView, ad esempio: [collegamento] http://stackoverflow.com/questions/19329723/ipad-masterdetail-template –

+0

ok, se viene chiamato lo story board Main.Storyboard, devi inserire solo @ "Main", anziché @ "Main.storyboard" – tong

17

Il instantiateViewControllerWithIdentifier è il Storyboard ID.

NextViewController *NVC = [self.storyboard instantiateViewControllerWithIdentifier:@"NextViewController"]; 
[self presentViewController:NVC animated:YES completion:nil]; 
2

questo ha funzionato per me:

NSTimer *switchTo = [NSTimer scheduledTimerWithTimeInterval:0.1 
      target:selfselector:@selector(switchToTimer)userInfo:nil repeats:NO]; 

- (void) switchToTimer { 
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPad" bundle:nil]; 
UIViewController *vc = [mainStoryboard instantiateViewControllerWithIdentifier:@"MyViewControllerID"]; // Storyboard ID 
[self presentViewController:vc animated:FALSE completion:nil]; 
} 
5

per chiudere la viewController chiamato con il codice risposte precedenti da CmdSft

ViewController *viewController = [[ViewController alloc] init];  
    [self presentViewController:viewController animated:YES completion:nil]; 

è possibile utilizzare

[self dismissViewControllerAnimated:YES completion: nil]; 
4
#import "YourViewController.h" 

a spingere una vista tra cui la barra di navigazione e/o barra delle schede:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"YourStoryboard" bundle:nil]; 
YourViewController *viewController = (YourViewcontroller *)[storyboard instantiateViewControllerWithIdentifier:@"YourViewControllerIdentifier"]; 
[self.navigationController pushViewController:viewController animated:YES]; 

Per impostare identificativo per un controller di vista, Open YourStoryboard.storyboard. Seleziona YourViewController View-> Utilities -> ShowIdentityInspector. Lì puoi specificare l'identificatore.

14

Swift versione:

Se ci si trova in un controller di navigazione:

let viewController: ViewController = self.storyboard?.instantiateViewControllerWithIdentifier("VC") as ViewController 
self.navigationController?.pushViewController(viewController, animated: true) 

Oppure, se si desidera solo per presentare una nuova visione:

let viewController: ViewController = self.storyboard?.instantiateViewControllerWithIdentifier("VC") as ViewController 
self.presentViewController(viewController, animated: true, completion: nil) 
1

Swift 3.0 Versione

se si desidera presentare il nuovo controller.

let storyboard = UIStoryboard(name: "Main", bundle: nil) 
let viewController = storyboard.instantiateViewController(withIdentifier: "controllerIdentifier") as! YourController 
self.present(viewController, animated: true, completion: nil) 

e se si vuole spingere ad un altro controller (se è in navigazione)

let storyboard = UIStoryboard(name: "Main", bundle: nil) 
let viewController = storyboard.instantiateViewController(withIdentifier: "controllerIdentifier") as! YourController 
self.navigationController?.pushViewController(viewController, animated: true) 
1

Swift 3.0 in

una visualizzazione controller per secondviewcontroller andare:

let loginVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "MsgViewController") as! MsgViewController 
     self.navigationController?.pushViewController(loginVC, animated: true) 

Secondo viewcontroller a 1stviewcontroller (indietro) per: di nuovo pulsante sul caso di azione: -

self.navigationController?.popViewController(animated:true) 

3rdviewcontroller al 1 ° salto viewcontroller per

self.navigationController?.popToRootViewController(animated:true) 

e più importante storyboard nella barra di navigazione unclicked assicurarsi che, questo ritorno azione eseguire