I'm using the presentViewController:animated:completion:
method to go to another view controller.
This is my code:
AddTaskViewController *add = [[AddTaskViewController alloc] init];
[self presentViewController:add animated:YES completion:nil];
This code goes to the other UIViewController
but the other controller is empty. I've always been using storyboards but now I need this to be done in code.
Ctrl+Drag from the “View Controller” button, to somewhere in the second View Controller(HomeViewController). It can be anywhere in the main box of the second view controller. When you release, it will show you a box like the one below. in this you don't need any code to switch, it will switch on click of a button.
If you're using a storyboard, you probably shouldn't be using alloc
and init
to create a new view controller. Instead, look at your storyboard and find the segue that you want to perform; it should have a unique identifier (and if not, you can set one in the right sidebar).
Once you've found the identifier for that segue, send your current view controller a -performSegueWithIdentifier:sender
message:
[self performSegueWithIdentifier:@"mySegueIdentifier" sender:self];
This will cause the storyboard to instantiate an AddTaskViewController and present it in the way that you've defined for that segue.
If, on the other hand, you're not using a storyboard at all, then you need to give your AddTaskViewController some kind of user interface. The most common way of doing so is to initialize the controller with a nib: instead of just calling init
, you'll call -initWithNibName:bundle:
and provide the name of a .xib file that contains your add-task UI:
AddTaskViewController *add = [[AddTaskViewController alloc]
initWithNibName:@"AddTaskView" bundle:nil];
[self presentViewController:add animated:YES completion:nil];
(There are other (less common) ways of getting a view associated with your new view controller, but this will probably present you the least trouble to get working.)
If you are using Storyboard and your "add" viewController is in storyboard then set an identifier for your "add" viewcontroller in settings so you can do something like this:
UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"NameOfYourStoryBoard"
bundle:nil];
AddTaskViewController *add =
[storyboard instantiateViewControllerWithIdentifier:@"viewControllerIdentifier"];
[self presentViewController:add
animated:YES
completion:nil];
if you do not have your "add" viewController in storyboard or a nib file and want to create the whole thing programmaticaly then appDocs says:
If you cannot define your views in a storyboard or a nib file, override the loadView method to manually instantiate a view hierarchy and assign it to the view property.
You need to set storyboard Id from storyboard identity inspector
AddTaskViewController *add=[self.storyboard instantiateViewControllerWithIdentifier:@"storyboard_id"];
[self presentViewController:add animated:YES completion:nil];
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With