2017-05-25 1 views
0

Comment puis-je transmettre des données de UIViewController à l'un des UIViewController à l'intérieur de UITabBarController?Comment transmettre des données à UITabBarController?

Ce qui suit ne fonctionne pas:

let hospitalsController = segue.destination as! postRequest 
hospitalsController.hospitalName = "Hospital Name" 

lorsque vous essayez code ci-dessus, je reçois l'erreur suivante:

Could not cast value of type 'UITabBarController' (0x10d05f418) to 'ProjectName.postRequest' (0x10b17fdd0). 

quand j'ai essayé les éléments suivants:

let test = self.tabBarController?.viewControllers![0] as! UINavigationController 
      let test2 = test.topViewController as! postRequest 
      test2.hospitalName = "Khola Hospital" 

Le application plantée sans erreur,

quand j'ai essayé d'imprimer print(tabBarController?.viewControllers) il m'a montré nil dans la console

Quelle est la bonne façon de transmettre des données de UIViewController à l'un des UIViewControllers à l'intérieur UITabBarController?

MISE À JOUR Voici mon story-board principale StoryBoard

Les données doivent être transmises de lui haut UIViewController vers le bas à droite UIViewController

Répondre

1

Vous êtes trop fermé pour le faire fonctionner qu'une seule erreur que vous besoin de lancer segue.destination à UITabBarController et vous avez tous aller.

if let tabbarController = segue.destination as? UITabBarController, 
    let postVC = tabbarController.viewControllers?.first as? postRequest, 

    postVC.hospitalName = "Khola Hospital" 
} 
+0

la L'application ne plante pas mais la valeur n'est pas transmise à hospitalName. Il montre zéro dans la console –

+0

J'ai mis à jour la question avec la capture d'écran –

+0

@BehrouzRiahi Il n'y a pas de navigation Contrôler vérifier la réponse éditée, si elle ne fonctionne toujours pas alors changer 'first' avec' last' –

0

Créez votre commande UITabBarController classe et transmettre les données à ce tabBarController puis dans votre choix ViewController où vous voulez obtenir le nom de l'hôpital juste vérifier la disponibilité de tabBarController chercher le nom de l'hôpital

class YourCustomTabBarController: UITabBarController { 
    var hospitalName = "" 
    //Do You Other Work Below 
} 

class PostRequest: UIViewController { 
    var hospitalName = "" 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     if let tabBarVC = self.tabBarController as? YourCustomTabBarController { 
      self.hospitalName = tabBarVC.hospitalName 
     } 
     //Handle Other Work. 
    } 
} 


if let tabBarVC = segue.destination as? YourCustomTabBarController { 
    tabBarVC.hospitalName = "XYZ Hospital" 
}