Storyboard de transmettre les données à partir de l'affichage de contrôleur de la barre d'onglets avec des enchaînements
-
11-12-2019 - |
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];
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 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 " "