Storyboard de transmettre les données à partir de l'affichage de contrôleur de la barre d'onglets avec des enchaînements

StackOverflow https://stackoverflow.com//questions/12652334

Question

J'ai une page(par exemple X) avant de l'onglet de la barre de contrôleur de l'utilisation du modèle des enchaînements pour ouvrir l'onglet de la barre de contrôleur.Aussi premier écran de la tab bar controller est de même avec X.

Je veux passer des données à partir de X de la barre d'onglets du contrôleur de la première page.

Peu de temps, j'ai envie de passer des données à partir de-vue-contrôleur à l'onglet de la barre de contrôleur de la page de story-board segue.Existe t'il une méthode pour cela ?

Voici la solution ;

    locationsHome* vc = [[locationsHome alloc] init];
    UITabBarController* tbc = [segue destinationViewController];
    vc = (locationsHome *)[[tbc customizableViewControllers] objectAtIndex:0];
Était-ce utile?

La solution

Voilà comment j'ai résolu mon problème.Vous pouvez transmettre des données à partir de ViewController à TabBarController avec cette méthode.

Utilisez ce code dans les prepareForSegue méthode

locationsHome* vc = [[locationsHome alloc] init];
UITabBarController* tbc = [segue destinationViewController];
vc = (locationsHome *)[[tbc customizableViewControllers] objectAtIndex:0];

Comme ceci:

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

    NSString * segueIdentifier = [segue identifier];
    if([segueIdentifier isEqualToString:@"tabbarGo"]){

        locationsHome* vc = [[locationsHome alloc] init];
        UITabBarController* tbc = [segue destinationViewController];
        vc = (locationsHome *)[[tbc customizableViewControllers] objectAtIndex:0];

        etc...

    }
}

Autres conseils

//if sent to First Tab of Tab Bar Controller
UITabBarController *tabBarController = segue.destinationViewController;
UINavigationController *navigationController = (UINavigationController *)[[tabBarController viewControllers] objectAtIndex:0];
createTeamViewController *controller = (createTeamViewController *)[[navigationController viewControllers] objectAtIndex:0];

controller.userProfile = self.userProfile;

Ajouter une propriété à la destination-vue-contrôleur (le sous-classé tab bar controller) et ensuite dans la vue de source de contrôleur, de mettre en œuvre prepareForSegue pour transmettre des informations à destination du contrôleur.Vous pouvez alors avoir la vue de destination du contrôleur de viewDidLoad pour agir sur les données qui lui a été transmis dans le prepareForSegue de la source-vue-contrôleur.

pour Swift 2.2 , je devais modifier la réponse acceptée de cette façon

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
    if (segue.identifier == "userAccountSegue")
    {
        var firstTabViewController: UserAccountViewController = UserAccountViewController()
        let tabViewController: UITabBarController = segue.destinationViewController as! UITabBarController
        firstTabViewController = (tabViewController.customizableViewControllers![0] as! UserAccountViewController)
        firstTabViewController.userObj = arrayForTable![selectedIndex] as? User

    }
}

Remarque: indice pour le code ci-dessus Snip

  • UTILISATEUR est mon Modèle Stockage des informations utilisateur
  • Mon View Controller SEGUE est connecté à TabviewContoller dans Storyboard avec Segue=" useraccountSuegue " "
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top