J'ai un appel de fonction (vue pop) dans mon contrôleur de 1ère vue qui doit être appelé une seule fois dans l'application. Depuis lors, chaque fois que je retourne à la 1ère vue contrôleur, la fonction doit ne pas être appelée à nouveau.
///// Once Action in View Controller override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) if self.isBeingPresented || self.isMovingToParent { // Perform an action that will only be done once popView() } }
6 Réponses :
Vous devez appeler cela dans la méthode ViewDidLoad. Il s'appelle une fois par cycle de vie UIViewController. Documentation ici .
Tout comme ceci: p> Si votre chemin est une vue pop après avoir été une fois dans le contrôleur de la vue, vous pouvez faire comme suit: P> /// bool that help indicate your visit
var isViewControllerVisited = false
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
if isViewControllerVisited {
// Perform an action that will only be done once
popView()
}
//change it here
isViewControllerVisited = true
}
J'ai essayé dans la viefDiDload sa toujours n'a pas d'effet ... n'a pas fonctionné
@Zeemriverswave êtes-vous sûr de votre code à l'intérieur de la déclaration?
@Zeemriverswave Si vous voulez PopView lorsque vous revenez simplement au contrôleur, je vous recommande d'utiliser une variable globale BOOL pour vous identifier dans ce contrôleur, puis l'appelez à l'intérieur de la viewDidAppear / Viewwillappear.
Selon le cycle de vie du contrôleur d'affichage, la méthode ou vous pouvez essayer le code suivant: p> ViewDidDload code> est appelée une seule fois. Donc, vous devez appeler votre méthode là-bas.
ci-dessous du code, essayez-le ..
override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) UserDefaults.standard.set(false, forKey: "isPopOverVCPopped") if UserDefaults.standard.bool(forKey: "isPopOverVCPopped") == false { UserDefaults.standard.set(true, forKey: "isPopOverVCPopped") popView() } }
Vous définissez le drapeau juste avant de rechercher sa valeur.
Si vous souhaitez appeler cette fonction PopView une seule fois sur votre application, essayez ceci,
dans l'application déléguée, définissez la valeur BOOL P>
override func viewDidLoad() { super.viewDidLoad() hasLaunchPop() }
Var privé isshowpop = Bool.elf code> ?? Ce n'est même pas utilisé.
Pour moi, je préfère utiliser le chargement paresseux. Cela permet de ne pas écrire de logique, il suffit de utiliser la déclaration Swift Lazy Var. Quelque chose comme ceci:
Peut-être que cela fonctionne. Dans votre mode de vue, ajoutez une propriété statique: Bien sûr, en fonction de votre configuration, cela ne fonctionnera pas si vous avez plus d'une instance de cette visiteuse qui devrait conserver son propre état sur Si PopView devrait être appelé ou non. P> p>
Il y a deux options pour cette solution static var code> et
var code> en fonction de la logique commerciale.
Qu'est-ce que vous utilisez pour revenir au contrôleur de première vue ??
Enregistrer le drapeau dans UserDefaultS -> ISPOPOVACPPPPED -> TRUE / FAUX.Si It FAUX, puis POP IT et UPDATE ISPOPOVERVCPPPED comme vrai.
@ Jarvis The Avenger, j'utilise Let Let ViewController: UIVIEWCONTROLLER = UISTORYBOARD (Nom: "Main", Bundle: Nil) .IdidInteviewController (SwrevealViewController ") Comme UIViewController Self.Present (ViewController, Animated: Faux, Achèvement: Nil)
@Sakshi, pourriez-vous s'il vous plaît expliquer comme code ... j'ai essayé mais quelque chose manque
@Zeemriverswave J'ai publié un code, plz vérifier cela.let-moi savoir si des problèmes sont là.