anton91
anton91

Reputation: 1093

Moving from one view to another iOS

I'm relatively new to iOS development. I am to move from one viewController to another I use a modal segue transition on button click. This is a game so i want to allow the user to click images to essential move the the app menus.

I have a main page that displays several images, on clicking one i want to be able to move to another view. Currently doing this with a modal segue is causing odd problems with my touchesEnded event where if, for example, i navigate to a page 3 times the touchesEnded event is fired 3 times.

Is there a better way for me to do this or am i just missing thing fundamental?

Thanks

Upvotes: 1

Views: 8748

Answers (3)

Prajwal Udupa
Prajwal Udupa

Reputation: 860

Yes, I think you must make the the navigation controller your root view controller then push views accordingly

UINavigationController * nav = [[UINavigationController alloc] initWithRootViewController:YOUR_BASE_CONTROLLER]
self.rootViewController = nav;

this is in your app delegate.

Then in your action method

[self.navigationController pushViewController:secondViewController animated:YES]

Upvotes: 1

Dana K
Dana K

Reputation: 380

Im assuming you are using the Storyboard to link VCs using segues.

Modal segues are great for simple transitions but really seem to limit what you can accomplish when they are just linked through SB. Ive found that creating an IBAction that includes the following for a VC segue will allow you to not only control your segues more efficiently but also allow you to have a clearer view of what is actually occurring during the transition.

-(IBAction)goToVc:(id)sender{
    //Other code to take place during the segue here

    //This will identify the Storyboard in use
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard"   bundle:nil];

    //This will identify the View Controller to switch to
    SecondViewController *vc2 = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewControllerID" ];

    [self presentViewController:vc2 animated:YES completion:NULL];
}

Upvotes: 1

jakenberg
jakenberg

Reputation: 2113

Every time you perform a modal segue, you lose the UINavigationController that you were previously using. What you need to do is embed a UINavigationController in the view that you are performing a modal segue to.

Check out a question I answered the other day to help you visualize more clearly what I'm talking about.

Upvotes: 0

Related Questions