0
votes

Désactiver l'action de navigation du bouton arrière

J'ai un écran d'accueil et écran de détail . De Écran d'accueil J'utilise Push NAVIGATION ET MOV sur Écran de détail .

Dans mon Écran de détail J'ai Un bouton arrière pour revenir à l'écran d'accueil . Parce que j'ai fait push à partir de écran d'accueil . Ce scénario fonctionne bien.

mais lorsque l'utilisateur appuyez sur le bouton arrière, je ne veux pas retourner l'écran sur mon écran d'accueil si une condition correspondait. Disons que j'ai un seul bouton appelé score de valeur. Si le nombre de score est 0. Ensuite, je ne veux pas que l'utilisateur redevienne. Si c'est plus de 1 alors si l'utilisateur clique sur le bouton arrière, ils peuvent passer à l'écran d'accueil.

donc j'ai fait: xxx

lorsque j'essaye ceci, je Je suis toujours capable de retourner à l'écran d'accueil en cliquant sur le bouton arrière. Comment puis-je rester dans le même écran?


1 commentaires

Il n'y a pas assez de code. Basé sur ce que vous avez, cela devrait fonctionner, mais cela ne devrait pas, nous aurions donc besoin d'en voir plus


3 Réponses :


0
votes

Vous pouvez essayer d'ajouter un bouton arrière personnalisé dans le contrôleur de navigation.

func setupCustomBackBtn() {
    
    let navBackBtn = UIButton(type: .system)
    navBackBtn.addTarget(self, action: #selector(backBtnAction), for: .touchUpInside)
    navBackBtn.setImage(UIImage(named: "customBack"), for: .normal)
    
    navBackBtn.frame = CGRect(x: -20, y: 0, width: 32, height: 32)
    let customBackBarBtn = UIBarButtonItem(customView: navBackBtn)
    navigationItem.leftBarButtonItem = customBackBarBtn
    
}


@objc func backBtnAction() {
}


2 commentaires

Je dois faire avec mon bouton NAV Bar Back. Pas avec mon bouton personnalisé. C'est l'exigence, est-ce possible?


Je ne connais aucune autre méthode mais mon hack fonctionne 100%.



0
votes

Vous devez créer une fonction d'action du bouton arrière et utiliser votre code: xxx pré>

dans cette fonction. p>

@IBAction func tapOnBackButton() {
    if count == 0 {
        self.dismiss(animated: true, completion: nil)
    }
}


0 commentaires

0
votes

Vous devez ajouter l'identifiant à la SEGUE POP

override func shouldPerformSegueWithIdentifier(identifier: String?, sender: AnyObject?) -> Bool {
    if let ident = identifier {
        if ident == "YourIdentifier" {
            if count > 0 {
                // Dont move , just stay in same screen
                return false
            }
            else {
                // Move to back home screen
                return true
            }
        }
    }
    return true
}


0 commentaires