bottom - status bar ios
iOS: controlador de vista actual programáticamente (9)
Estoy usando el presentViewController:animated:completion:
para ir a otro controlador de vista.
Este es mi código:
AddTaskViewController *add = [[AddTaskViewController alloc] init];
[self presentViewController:add animated:YES completion:nil];
Este código va al otro UIViewController
pero el otro controlador está vacío. Siempre he usado guiones gráficos, pero ahora necesito que esto se haga en código.
Aquí es cómo puedes hacerlo en Swift:
let vc = UIViewController()
self.presentViewController(vc, animated: true, completion: nil)
Debe configurar el Id del guión gráfico del inspector de identidad del guión gráfico
AddTaskViewController *add=[self.storyboard instantiateViewControllerWithIdentifier:@"storyboard_id"];
[self presentViewController:add animated:YES completion:nil];
La mejor manera es
AddTaskViewController * add = [self.storyboard instantiateViewControllerWithIdentifier:@"addID"];
[self presentViewController:add animated:YES completion:nil];
Prueba este código:
[self.navigationController presentViewController:controller animated:YES completion:nil];
Pruebe lo siguiente:
NextViewController *nextView = [self.storyboard instantiateViewControllerWithIdentifier:@"nextView"];
[self presentViewController:nextView animated:YES completion:NULL];
Si está usando un guión gráfico, probablemente no debería usar alloc
e init
para crear un nuevo controlador de vista. En su lugar, mira tu guión gráfico y encuentra el segmento que deseas realizar; debe tener un identificador único (y si no, puede establecer uno en la barra lateral derecha).
Una vez que haya encontrado el identificador para ese segmento, envíe a su controlador de vista actual un mensaje -performSegueWithIdentifier:sender
:
[self performSegueWithIdentifier:@"mySegueIdentifier" sender:self];
Esto hará que el guión gráfico cree una instancia de AddTaskViewController y lo presente de la forma que ha definido para ese segmento.
Si, por otro lado, no estás usando un guión gráfico, entonces debes darle a tu AddTaskViewController algún tipo de interfaz de usuario. La forma más común de hacerlo es inicializando el controlador con un plumín: en lugar de simplemente llamar a init
, llamará a -initWithNibName:bundle:
y proporcionará el nombre de un archivo .xib que contenga su IU de agregar tarea:
AddTaskViewController *add = [[AddTaskViewController alloc]
initWithNibName:@"AddTaskView" bundle:nil];
[self presentViewController:add animated:YES completion:nil];
(Hay otras formas (menos comunes) de obtener una vista asociada con su nuevo controlador de vista, pero esto probablemente le presentará el menor problema para trabajar).
Si estás usando Storyboard y tu view "add" ViewController está en el guión gráfico, configura un identificador para tu viewcontroller "add" en la configuración para que puedas hacer algo como esto:
UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"NameOfYourStoryBoard"
bundle:nil];
AddTaskViewController *add =
[storyboard instantiateViewControllerWithIdentifier:@"viewControllerIdentifier"];
[self presentViewController:add
animated:YES
completion:nil];
si no tienes tu viewController "add" en el guión gráfico o en un archivo nib y quieres crear todo el programa programáticamente, entonces appDocs dice:
Si no puede definir sus vistas en un guión gráfico o en un archivo de punta, anule el método loadView para instanciar manualmente una jerarquía de vista y asignarla a la propiedad de vista.
tu codigo :
AddTaskViewController *add = [[AddTaskViewController alloc] init];
[self presentViewController:add animated:YES completion:nil];
este código puede ir al otro controlador, pero obtienes un nuevo control de vista, no el controlador de tu guión gráfico, puedes hacer esto:
AddTaskViewController *add = [self.storyboard instantiateViewControllerWithIdentifier:@"YourStoryboardID"];
[self presentViewController:add animated:YES completion:nil];
LandingScreenViewController *nextView=[self.storyboard instantiateViewControllerWithIdentifier:@"nextView"];
[self presentViewController:nextView animated:YES completion:^{}];