Domanda

Prima degli storyboard sono stato in grado di impostare delegati e dati di dati semplicemente trascinando uno sbocco in una classe. Con gli storyboard, non riesco a trascinare la presa su un altro controller di visualizzazione; Non esiste una destinazione che risponderà ad esso.

Se faccio clic su un oggetto controller di visualizzazione, sono in grado di vedere il proprietario della classe in basso, ma non appena seleziono l'altro controller di vista contenente la presa, la vecchia selezione è sparita, quindi non posso collegare i due.

Questo è il modo di Apple di dire che dovremmo collegarli solo a livello di programmazione?

È stato utile?

Soluzione

Corretta. Imposta il delegato o altri dati nel tuo prepareForSegue:sender: metodo. Ecco un esempio:

- (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;
    }
}

Altri suggerimenti

Se il tuo storyboard seguirà il controller di visualizzazione di destinazione è un UIVIEDController, allora la risposta @marco è giusta. Ma se il controller di visualizzazione di destinazione è un UinaVigationViewController, allora devi ottenere UiviewController da UinaVigationViewController:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    // Check the segue identifier
    if ([segue.identifier isEqualToString:@"chooseCategoryType"])
    {
        // Get a reference of your custom view controller if your segue connection is an UIViewController
        // CustomViewController *customViewController = segue.destinationViewController;
        // Get a reference of your custom view controller from navigation view controller if your segue connection is an UINavigationViewController
        CustomViewController *customViewController = [[[segue destinationViewController] viewControllers] objectAtIndex:0];

        // Set your custom view controller's delegate
        customViewController.delegate = self;
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top