2017-05-08 84 views
2

在以下代碼中,它已成功實施。只需要一個修改。當應用程序最初打開管理員密碼時,應該使用默認密碼「Hello」,然後當用戶有權訪問管理員密碼時,將編輯並保存它,然後它將在密鑰「管理員密碼」帶輸入密碼的警報視圖

如何我可以在第一次使用默認密碼嗎?

func enableSectionAlert() { 
    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: "admin password"), x == field { 

       self.demosSelectionEnabled() 
       self.showSection.isUserInteractionEnabled = false 
       self.showSection.textLabel?.textColor = UIColor.lightGray 
      } 
      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) 
} 

}

回答

3

我相信你要的默認密碼是「你好」,並有選擇稍後改變它,並堅持在userDefaults。 如果是這樣的話,爲什麼不最初設置的默認值,如下所示:

   UserDefaults.standard.set("Hello", forKey: "admin password") 

集,它只是在可能的AppDelegate一次,使用下面的方法:

private func setDefaultPassword() { 
    if UserDefaults.standard.string(forKey: "admin password") == nil { 
     UserDefaults.standard.set("Hello", forKey: "admin password") 
    } 
} 
+0

所以我只是把下面的行代碼在我的AppDelegate和多數民衆贊成它? UserDefaults.standard.set(「Hico1234」,forKey:「管理員密碼」) – habed

+0

函數setDefaultPassword是否需要從我的enableSectionAlert中調用,或者一旦應用程序運行並且管理員密碼鍵是空的,它將接受輸入你好? – habed

+1

我想只是從AppDelegate中的appDidFinishLaunchingWithOptions()調用它,那應該沒問題。 –

0

可以初始化初始文本文本框這樣

alertController.addTextField { (textField) in 
    textField.text = "Hello" 
    textField.isSecureTextEntry = true 
} 
1

如果我正確理解你你想要的密碼「你好」允許用戶安裝後登錄應用程序。一旦他們登錄後,他們可以更改密碼,對吧?

如果設置了密鑰admin password的值,請將此檢查存檔在AppDelegate的applicationDidLaunch方法中。如果沒有爲此密鑰設置值,則返回nil。如果您從此調用中獲得nil,請將字符串設置爲Hello

這允許用戶使用Hello登錄,直到保存用戶默認值的密碼更改爲止。