He estado luchando con esto por un tiempo, y parece que nunca puedo obtener una respuesta directa.¿Cómo puedo cambiar las vistas mediante programación en un controlador de vista? (Xcode, iPhone)
¡Se agradece cualquier ayuda!
He estado luchando con esto por un tiempo, y parece que nunca puedo obtener una respuesta directa.¿Cómo puedo cambiar las vistas mediante programación en un controlador de vista? (Xcode, iPhone)
¡Se agradece cualquier ayuda!
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];
[self.navigationController pushViewController:someViewController animated:YES];
Este no funciona para mí, ¿Importa que lo esté haciendo en el método tableView: didSelectRowAtIndexPath:? – mishajw126
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.
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 –
bien, si se llama la historia del panel Main.Storyboard, necesitas poner simplemente @ "Main", en lugar de @ "Main.storyboard" – tong
El instantiateViewControllerWithIdentifier
es el Storyboard ID
.
NextViewController *NVC = [self.storyboard instantiateViewControllerWithIdentifier:@"NextViewController"];
[self presentViewController:NVC animated:YES completion:nil];
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];
}
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];
#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.
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)
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)
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
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. –
Actualizado para reflejarlos. – SlateEntropy
Estoy ante esta pregunta, si uso la segunda solución, ¿podré volver a la vista anterior y cómo? – user2533527