1
votes

3 Réponses :


-1
votes

Je n'ai pas encore essayé le modèle de coordinateur, je ne peux donc pas faire de commentaire à ce sujet. Si vous cherchez une autre façon, je pense que l'utilisation de UserDefaults serait peut-être une meilleure solution.

Par exemple, disons que vous effectuez la transition vers labelViewController en appuyant sur un bouton:

override func viewDidLoad() {
super.viewDidLoad()

if userDefaults.bool(forKey: "seguedHere") == false {
    label.text = "came direct"
    imageView.isHidden = true
}
else {
    label.text = "button"
    imageView.isHidden = false
 }
}


1 commentaires

Je peux penser à quelques raisons pour lesquelles cela pourrait ne pas fonctionner. Le plus pertinent étant si deux instances de la même vue sont affichées à la fois, selon la façon dont implémenté afficherait un comportement indésirable. Essayez cependant ...



0
votes

mais y a-t-il une autre méthode que je peux utiliser pour réutiliser simplement un viewController dans deux circonstances différentes

Si les "deux circonstances différentes" que vous décrivez sont très différentes (par là, je veux dire "nécessitent des lignes de code très différentes pour être exécutées"), vous devez alors créer deux classes de contrôleurs de vue différentes, car sinon vous violeriez le Principe de responsabilité unique .

Si vos «deux circonstances différentes» sont différentes , mais aussi assez liées, alors vous pouvez simplement avoir toutes les informations que le VC a besoin de connaître en tant que propriétés. Vous n'avez certainement pas besoin d'un ViewController entier .

Par exemple, si votre LabelViewController affichera un bouton "toto" uniquement s'il est présenté par ViewControllerFoo.

Vous pouvez ajouter une propriété showFooButton dans LabelViewController:

if segue.identifier == "label" {
    let vc = segue.destination as! LabelViewController
    vc.showFooButton = true
}

0 commentaires

1
votes

Vous pouvez le faire sans passer originalVC simplement en vérifiant le type de parent si vous le poussez dans un contrôleur de navigation comme celui-ci:

if let p = parent {
        if p.isKind(of: OriginalViewController.self){
            //it pushed in navigation controller stack after OriginalViewController
        }
    }


0 commentaires