1
@IBAction func addInformation(_ sender: UIBarButtonItem) { 
    // check rateHourly has value 
    if let editedRateHourly = rateHourly.text { 
     print("editedRateHourly condition is \(editedRateHourly)") 
     if editedRateHourly != ""{ 
      print("not nil") 
      // check edit value is number? 
      let num = Int(editedRateHourly) 
      if num != nil { 
       print("is num") 
       // add to database 
       UserDefaults.standard.set(editedRateHourly, forKey: "\(findDate())") 
       UserDefaults.standard.synchronize() 
       // back to last viewController 
       navigationController?.popToRootViewController(animated: true) 
      }else{ 
       print("not num") 
       print("error alert push!!") 
       popErrorAlert() 
      } 
     }else { 
      print("nil") 
      print("editedRateHourly condition is nil") 
      popErrorAlert() 
     } 
    } 
} 
@IBAction func cannelInformationPage(_ sender: UIBarButtonItem) { 
    navigationController?.popToRootViewController(animated: true) 
} 

Je veux créer une nouvelle page d'édition simple. C'est deux problème pour moi que lorsque je termine l'édition if-else va vérifier que la condition est correcte ou non, puis enregistrer les données popToRootViewControlle. Quand je finis l'édition je clique sur "addInformation" BarButtonItem et je me trompe d'interface. l'autre faux est quand je clique sur editField mais je ne saisis aucune condition. Et puis je clique sur "cannelInformationPage" UIBarButtonItem. Il se trompe aussi.IOS navigationController? .popToRootViewController a tort

It's what I get wrong

wrong information

+0

On ne sait pas ce que vous voulez dire dans ** Je me trompe d'interface **? Si le contrôleur doit afficher les informations mises à jour à partir de UserDefaults, vous devez l'actualiser manuellement, par exemple sur viewWillAppear –

+0

https://i.stack.imgur.com/E2tmE.png Je veux dire quand je clique sur "cannelInformationPage" ou "addInformation" .le code devrait être exécuté "navigationController? .popToRootViewController (animé: true)". mais il pousse le mauvais –

+0

Votre application a-t-elle planté? Selon l'image ci-jointe, votre application s'est brisée à cause de certaines raisons et pas mal l'interface utilisateur. – Surjeet

Répondre

1

Parce qu'il retourne Bool

_ = navigationController?.popToRootViewController(animated: true) 
1
_ = self.navigationController?.popViewController(animated: true) 

Si vous voulez revenir au dernier contrôleur de vue que vous pouvez essayer au-dessus de la ligne, l'espoir de son travail pour vous .

+0

J'essaie d'ajouter moi-même, mais ça ne marche pas. Si j'enlève tout le if-else, ça peut marcher –

+0

Avez-vous essayé popViewController (animé: true)? –

+0

J'ai été essayé, mais toujours faux –