Scott
Scott

Reputation: 1478

Segue from screen with several buttons?

I am trying to write an app using UINavigationViewController. My first screen has several buttons on it, and on the click of each button, I want to segue to a UIViewController. I know that I can add a segue on each button, all pointed to the UIViewController that I want to go to, but I was wondering if it is possible to use only one segue that can be fired from each of the buttons.

If that is not possible, I was wondering if it was possible to open the second UIViewController from the first one, on button click, and provide a Back button like the UINavigationView provides. I did manage to get everything on this idea working, except for the back button. I mean I can put a standard button somewhere on the screen and go back, but I'd like the standard back button on the UINavigationView.

Phew! I'm not sure if that makes any sense.

I know that I could also use a tableview, but I'm trying to set this up with buttons.

Thanks

Edit: Thank you to everyone that answered. I now have this working. I would vote up the answers, but I don't have enough posts to do it. I appreciate the answers!

Upvotes: 0

Views: 192

Answers (2)

Syed Tariq
Syed Tariq

Reputation: 2918

If you need to have separate action functions for each button, suggest that you segue from the main controller to the other controller and create a segue identifier (see xcode procedure below); then, use performSegueWithIdentifier from each of the button action functions. You can also take advantage of the prepareForSegue. To create the segue, control-drag from the left button in the controller in the storyboard to the controller you want to segue to and pick show.

Check the example code in swift that I did for a very similar problem in the SO reference

Linking View Controllers through button

You can embed the main controller in a navigation controller and that will give you the ability to navigate back. If you have multiple layers you can also use unwind segue.

Upvotes: 1

narciero
narciero

Reputation: 615

Link each button to one single action (ex. buttonClick) in that ViewController and then perform the appropriate segue using pushViewController method on self.navigationController

-(IBAction)buttonClick:(id)sender {
if(sender.id == self.button1) {
    DestinationViewController *vc = [[UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]] instantiateViewControllerWithIdentifier:@"VC_IDENTIFIER"];
    [self.navigationController pushViewController:vc animated:YES];
}

Or if you already have that 1 segue defined in storyboards you can use

[self performSegueWithIdentifier:@"SegueIdentifier" sender:self];

And use that inside the buttonClick method. Using the 1st example, or the second one as long as the segue you setup in the storyboards is a push then you should already get the back button as that is the default behavior for pushing view controllers onto the navigation stack.

Upvotes: 0

Related Questions