2012-06-07 17 views

Respuesta

86

Si estás en un regulador de la navegación:

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

o si lo que desea es presentar un nuevo punto de vista:

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

Solo para observar que 'presentModalViewController: animated:' ha sido marcado como obsoleto en [UIViewController docs] (http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference. html). 'presentViewController: animated: completion:' debe usarse en su lugar. –

+1

Actualizado para reflejarlos. – SlateEntropy

+2

Estoy ante esta pregunta, si uso la segunda solución, ¿podré volver a la vista anterior y cómo? – user2533527

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

Este no funciona para mí, ¿Importa que lo esté haciendo en el método tableView: didSelectRowAtIndexPath:? – mishajw126

33

Si desea presentar una nueva vista en el mismo guión gráfico,

En 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]; 

Para establecer el identificador en un controlador de vista, Abra MainStoryBoard.storyboard. Seleccione YourViewController Ver-> Utilidades -> ShowIdentityInspector. Allí puede especificar el identificador.

+0

Esto empuja las vistas continuas siempre que presione una fila en una celda DynamicTableView, por ejemplo: [link] http://stackoverflow.com/questions/19329723/ipad-masterdetail-template –

+0

bien, si se llama la historia del panel Main.Storyboard, necesitas poner simplemente @ "Main", en lugar de @ "Main.storyboard" – tong

17

El instantiateViewControllerWithIdentifier es el Storyboard ID.

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

Esto funcionó para mí:

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

Desestimar la ViewController llamada con el código de respuestas anteriores por CmdSft

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

puede utilizar

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

para empujar una vista incluyendo la barra de navegación y/o barra de pestañas:

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

Para establecer identificador a un controlador de vista, Open YourStoryboard.storyboard. Seleccione YourViewController View-> Utilities -> ShowIdentityInspector. Allí puede especificar el identificador.

14

Swift versión:

Si usted está en un regulador de la navegación:

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

O si lo que desea es presentar un nuevo punto de vista:

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

Swift 3.0 Versión

si desea presentar un nuevo controlador.

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

y si usted quiere empujar a otro controlador (si está en la navegación)

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 en

un controlador de vista a secondviewcontroller ir:

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

2nd viewcontroller to 1stviewcontroller (volver) para: botón de retroceso en caso de acción: -

self.navigationController?.popViewController(animated:true) 

3rdviewcontroller al 1 de salto viewcontroller para

self.navigationController?.popToRootViewController(animated:true) 

y guión gráfico más importante en la barra de navegación unclicked asegurarse de que esto de nuevo la acción realizar

Cuestiones relacionadas