Search code examples
iosxcodexcode4delegatesuistoryboard

Storyboard - setting delegates


Before storyboards I was able to set delegates and datasources just by dragging an outlet to a class. With storyboards, I cannot drag the outlet to another view controller; there is no destination that will respond to it.

If I click on a view controller object, I am able to see the class owner at the bottom, but as soon as I select the other view controller containing the outlet, the old selection is gone, so I cannot connect the two.

Is this Apple's way of saying we should only connect them programmatically?


Solution

  • Correct. Set the delegate or other data in your prepareForSegue:sender: method. Here is an example:

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
    {
        // Check the segue identifier
        if ([segue.identifier isEqualToString:@"showDetail"])
        {
            // Get a reference to your custom view controller
            CustomViewController *customViewController = segue.destinationViewController;
    
            // Set your custom view controller's delegate
            customViewController.delegate = self;
        }
    }