Reputation: 1271
I am attempting to use a button to go from one View (XIB) to another View. I'm using Xcode 4.3.2 and iOS 5. I start off by creating the project (Single View Application). I then create my button in Interface Builder, create my outlet in the header file, and my IBAction in the .m file. Next, I right clicked on my project folder in Xcode and selected "New File". I then selected "Object-C Class" and named it "SecondViewController". Two new files were created, "SecondViewController.h" and "SecondViewController.m". Then I went back and right clicked on my project folder in Xcode, selected "New File" and chose "view" out of the "User Interface" options.
Now I have my empty IBAction (my button) which I want to use to go to a new view, which is called SecondViewController.xib.
If the creation of the new XIB and .h/.m files are correct up to this point, then how would I go about doing this using my button to "get to" or display my second view? Keep in mind, I'm still at a beginner level and I appreciate any help and your patience :)
The only differences I can tell between my main View and my SecondView are in the header files:
Main View header file:
@interface ButtonToNewViewViewController : UIViewController
Second View header file:
@interface SecondViewController : NSObject
IBAction:
-(IBAction)nextView:(id)sender
{
// go to new view
}
Upvotes: 1
Views: 16434
Reputation: 41
For anyone returning to this question, the following syntax is now deprecated as of iOS 6
[self presentModalViewController: ]
The replacement is very similar
[self presentViewController:viewController animated:YES completion:nil];
Upvotes: 1
Reputation: 4267
This is quite a simple task that are covered by many tutorials online, but I'll give you some help anyways. :-)
First of all, when you create SecondViewController
, remember to create it as a subclass of UIViewController
, not NSObject
. So unless you have done a lot of work with those files, you can just go ahead and recreate them. At the same time you can make sure that Xcode creates the xib-file for you automatically by checking a checkbox in the creation-process.
When you have created SecondViewController
(.h, .m and .xib), open up ButtonToNewViewController.m
and put #import "SecondViewController.h"
at the top of the file. In your method nextView:
, you can then use these two lines to change to the second view controller:
SecondViewController *second = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
[self presentViewController:second animated:YES completion:nil];
That should pop up the second view controller, with some simple animation. Make sure that the string you pass to initWithNibName:
has the same name as your .xib-file.
And if you want to go back to ButtonToNewViewController
, you can use this in a method in SecondViewController
:
[self dismissViewControllerAnimated:YES completion:nil];
That should clear things up a bit. :-)
Upvotes: 10
Reputation: 130193
You can change from one xib to another using the following.
- (IBAction)showInfo1:(id)sender
{
mySecondViewController *controller = [[mySecondViewController alloc] initWithNibName:@"nameOfMyXib" bundle:nil];
[self setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
[self presentModalViewController:controller animated:YES];
}
Upvotes: 0