2017-05-15 2 views
1

Ich habe eine Tabellenansicht, die verschiedene Abschnitte hat. Nach der Ansicht Laden verstecken ich den Abschnitt und erstellen Sie eine Overlay-Taste über den Abschnitt, die es auf das Klicken auf diese Warnmeldung zeigt für Admin-Passwort gefragtVerstecken und Anzeigen von Abschnitt in der Tabellenansicht auf eine Schaltfläche Anfrage

PROBLEM: Nun, ich versuche, den Abschnitt zu zeigen, dass zunächst versteckt sobald der Benutzer das richtige Passwort eingibt und die Schaltfläche ausblenden. NEED HILFE BEI ​​DIESER

zunächst den Abschnitt 1 Einstellung versteckt und Erstellen von Overlay-Taste werden:

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

    if section == 1 { 

     let enableButton = UIButton(frame: CGRect(origin: CGPoint(x: 320, y: 160), size: CGSize(width: 130, height: 30))) 
     enableButton.backgroundColor = UIColor.clear 
     enableButton.setTitle("Enable Section", for: .normal) 
     enableButton.setTitleColor(.blue, for: .normal) 
     enableButton.addTarget(self, action: #selector(ConfigTableViewController.enableButtonClicked), for: .touchUpInside) 
     self.view.addSubview(enableButton) 

     return 0 
    } 

    else if section == 2 { 
     return 2 
    } 
    else if section == 3 { 
     return 2 
    } 

    return 1 
} 

Diese func aufruft, wenn die Schaltfläche geklickt wird:

func enableButtonClicked() { 

    let alertController = UIAlertController(title: "Admin Password", message: "Please input admin password", preferredStyle: .alert) 

    let enable = UIAlertAction(title: "Enable", style: .default) { (_) in 
     let field = alertController.textFields?[0].text 
     if let x = UserDefaults.standard.string(forKey: "initial admin password"), x == field { 


     } 
     else{ 

      let wrongPwd = UIAlertController(title: "Wrong Admin Password", message: nil, preferredStyle:UIAlertControllerStyle.alert) 
      wrongPwd.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.default, handler: nil)) 
      self.present(wrongPwd, animated: true, completion: nil) 
     } 
    } 

    let cancelAction = UIAlertAction(title: "Cancel", style: .cancel) { (_) in } 

    alertController.addTextField { (textField) in 
     textField.placeholder = "Admin Password" 
     textField.isSecureTextEntry = true 
    } 

    alertController.addAction(enable) 
    alertController.addAction(cancelAction) 

    self.present(alertController, animated: true, completion: nil) 
} 
+0

Was erwarten Sie, was passiert eigentlich? – Abizern

+0

@Abizern: Anfangs, wenn die App geladen wird, ist der Abschnitt ausgeblendet und es gibt einen Knopf darüber "Abschnitt aktivieren" Wenn ich auf den Button klicke und das Admin-Passwort eingäbe, erwarte ich mit dem richtigen Passwort den Abschnitt "Enable section" Schaltfläche wird ausgeblendet. Momentan passiert mit dem Code, dass wenn ich das richtige Passwort eingib, nichts passiert (hier brauche ich Hilfe, um den Abschnitt zu enthüllen und die Schaltfläche auszublenden) und wenn der Benutzer das falsche Admin Passwort eingibt, wird eine Warnung mit dem Text "Falsches Passwort" angezeigt " – habed

+0

Ich kann nichts in Ihrem Abschnitt Code sehen, der ändert, was angezeigt wird, wenn der Benutzer erfolgreich angemeldet ist. – Abizern

Antwort

1

Ihr Problem zu lösen , ich werde vorschlagen, dass Sie eine flag erstellen, die überprüfen, ob Ihre PassWord korrekt ist oder nicht.

1.Suppose Sie haben eine Flagge:

var correctPasswordFlag : Bool = false // initially assume it wrong 
  1. einfach eine Schaltfläche, um Ihre Zelle Ziehen und erstellen IBOutlet sagen configEnableButton und fügen Zielselektor dieser Methode:

    func enableButtonClicked() {

    let alertController = UIAlertController(title: "Admin Password", message: "Please input admin password", preferredStyle: .alert) 
    
        let enable = UIAlertAction(title: "Enable", style: .default) { (_) in 
         let field = alertController.textFields?[0].text 
         if let x = UserDefaults.standard.string(forKey: "initial admin password"), x == field { 
          //For correct password 
          correctPasswordFlag = true 
          //Reload Tableview 
          configTableview.relaod() // if not then create iboutlet of tableview 
         } 
         else{ 
          //For wrong password 
          correctPasswordFlag = false 
          //Reload Tableview 
          configTableview.relaod() // if not then create iboutlet of tableview 
          let wrongPwd = UIAlertController(title: "Wrong Admin Password", message: nil, preferredStyle:UIAlertControllerStyle.alert) 
          wrongPwd.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.default, handler: nil)) 
          self.present(wrongPwd, animated: true, completion: nil) 
         } 
        } 
    
        let cancelAction = UIAlertAction(title: "Cancel", style: .cancel) { (_) in } 
    
        alertController.addTextField { (textField) in 
         textField.placeholder = "Admin Password" 
         textField.isSecureTextEntry = true 
        } 
    
        alertController.addAction(enable) 
        alertController.addAction(cancelAction) 
    
        self.present(alertController, animated: true, completion: nil) 
    
    } 
    

Ich hoffe, dies hilft Ihnen, Ihr Problem zu beheben. Viel Spaß beim Programmieren und Lernen.

+1

Es tat. Danke für Ihre Hilfe. – habed

Verwandte Themen