Search code examples
iosobjective-cvariablesuistoryboardseguepushviewcontroller

Set Method Values With prepareForSegue


Basically, i'm using the prepareForSegue method to transition to another view within my storyboard, my view had to be embedded in a navigation controller in order to display the navigation bar so I am passing variables in such a way:

    -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    if([segue.identifier isEqualToString:@"exploreAddSelected"]){

        UINavigationController *navController = (UINavigationController *)segue.destinationViewController;
        AddTableViewController *controller = (AddTableViewController *)navController.topViewController;
        controller.tagName = tagName;
    }
}

My issue is I need to be able to set some method values in the actual view controller when using the prepareForSegue method, as you can do when using pushViewController as below:

DetailViewController *detailViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"DetailViewController"];
detailViewController.tagName = tagName;
[detailViewController setCurrentHashtag:nil];
[navigationController pushViewController:self.detailViewController animated:YES];

I need to be able to set the "setCurrentHashtag" method, that is declared in the view controller that the segue "exploreAddSelected" goes to. How would I do this?


Solution

  • The answer to this is actually extremely obvious, but it takes me to ask the question to realise the answer myself.

    You can simply set:

    controller.currentHashtag = nil;
    

    Where currentHashtag is a newly declared instance in the view controller. Then in the actual view controller set:

    [self setCurrentHashtag:currentHashtag];