2016-07-20 5 views
0

Es macht mich verrückt, weil es mir noch nie passiert ist, und ich habe das schon Dutzende Male gemacht.Null Wert beim Passieren der View Controller

Wenn ein Wert zwischen zwei View-Controllern übergeben wird, lautet der Wert NULL.

Ich habe eine prepareForSegue: Methode:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if ([segue.identifier isEqualToString: @"LoginSegue"]) { 
     UITabBarController *destinationTabController = [segue destinationViewController]; 
     ViewController *destinationViewController = destinationTabController.selectedViewController; 
     NSLog(@"Logged user is %@.", loggedUser); //This prints out the user correctly 
     destinationViewController.currentUser = loggedUser; 
    } 
} 

Aber wenn die Segue durchgeführt wird ich versuche, den currentUser Wert zu protokollieren und es ist NULL.

Irgendwelche Ideen, Leute?

+0

Versuchen Sie, 'destinationViewController' zu protokollieren. – matt

+0

Yup, ich bin ein Idiot. Es war null. Durch die Änderung (vorerst) in [destinationTabController viewController] objectAtIndex: 0] wurde das Problem behoben. – Ancinek

+0

:) Wenn etwas nicht funktioniert, melden Sie es sich an. Objective-C verbietet nicht, wenn die Dinge null sind, also kann das immer die Ursache sein. Ein weiterer grundlegender Grund für den Wechsel zu Swift: Sie sollten darüber nachdenken. – matt

Antwort

2

Der Tab-Leiste-Controller ist nicht in der Schnittstelle, so dass nichts ausgewählt ist. Daher destinationViewController ist nil und Ihr Versuch, seine currentUser setzt nichts.

Verwandte Themen