簡體   English   中英

如何存儲我的第一個文本字段以免第二次快速查詢

[英]How to store my first textfield to not ask for the second time in swift

非常感謝您的幫助。

我創建了一個UITextField,當用戶編寫一個鏈接並在此之后輸入時,我的文本字段消失了,我的webView出現了。

我想做的是,當用戶第一次編寫其鏈接時,文本字段將保存該鏈接,而當用戶再次打開該應用程序時,Web視圖將直接從最后一個鏈接打開用戶寫文本字段的內容。 基本上,存儲的鏈接應該第二次運行。

這是我所有的代碼,

    import UIKit
import Foundation


let urlKey = "User URL"

class ViewController: UIViewController, UITextFieldDelegate {

    @IBOutlet weak var textField: UITextField!
    @IBOutlet weak var webView: UIWebView!

    override func viewDidLoad() {
        super.viewDidLoad()

        self.webView.hidden = true
            self.textField.addTarget(self, action: #selector(ViewController.textFieldDidUpdate(_:)), forControlEvents: UIControlEvents.EditingChanged)

      if doesURLExist() {
        self.textField.text = getURL()



  }


}
    // Text Field Delegate
    func textFieldDidUpdate(textField: UITextField)
    {
        // Remove Spaces
        textField.text = textField.text!.stringByReplacingOccurrencesOfString(" ", withString: "", options: [], range: nil)



        // Validate URL
        NSURL.validateUrl(textField.text, completion: { (success, urlString, error) -> Void in
            dispatch_async(dispatch_get_main_queue(), { () -> Void in
                if (success)
                {

                  self.saveURL(urlString!)
                  self.webView.hidden = false
                  self.textField.hidden = true 
                  let request = NSURLRequest(URL: NSURL(string: urlString!)!)
                  self.webView.loadRequest(request)

                }
                else
                {
                    self.webView.stopLoading()
                    self.webView.hidden = true
                }


            })

        })



          }
    @IBAction func dismissKeyboard(sender: AnyObject) {
        self.resignFirstResponder()
        self.view.endEditing(true)
    }
  func saveURL(urlString: String)  {
    let defaults = NSUserDefaults.standardUserDefaults()
    defaults.setObject(urlString, forKey: urlKey)
  }

  func getURL() -> String {
    let defaults = NSUserDefaults.standardUserDefaults()
    let urlString = defaults.objectForKey(urlKey) as! String
    return urlString
  }

  func doesURLExist() -> Bool {
    let defaults = NSUserDefaults.standardUserDefaults()
    guard let _ = defaults.objectForKey(urlKey) where defaults.objectForKey(urlKey) is String else {
      return false
    }
    return true
  }


}

這是我在github中的項目: 在此處輸入鏈接描述

您應該將輸入的字符串保存為用戶默認值。 當您的應用程序打開時,您應該檢查用戶默認設置,以查看是否已經保存了字符串。

Swift 2代碼將您的URL保存為用戶默認設置:

NSUserDefaults.standardUserDefaults().setObject(urlString!, forKey: "EnteredURLString")

Swift 2代碼檢查是否存在保存的URL字符串:

if let urlString = NSUserDefaults.standardUserDefaults().stringForKey("EnteredURLString") {
}

您將要通過調用doesURLExist來檢查url是否首先存在,如果存在,則選擇不顯示該文本字段。 如果不存在,請調用saveURL NSUserDefaults提供了一種存儲輕量數據的簡單方法。

let urlKey = "User URL"     

func saveURL(urlString: String)  {
    let defaults = NSUserDefaults.standardUserDefaults()
    defaults.setObject(urlString, forKey: urlKey)
}

func getURL() -> String {
    let defaults = NSUserDefaults.standardUserDefaults()
    let urlString = defaults.objectForKey(urlKey) as! String
    return urlString
}

func doesURLExist() -> Bool {
    let defaults = NSUserDefaults.standardUserDefaults()
    guard let _ = defaults.objectForKey(urlKey) where defaults.objectForKey(urlKey) is String else {
        return false
    }
    return true
}

因此,您的課程應類似於:

import UIKit
import Foundation

let urlKey = "User URL"     

class ViewController: UIViewController, UITextFieldDelegate {

    @IBOutlet weak var textField: UITextField!
    @IBOutlet weak var webView: UIWebView!

    override func viewDidLoad() {
        super.viewDidLoad()

        self.webView.hidden = true

        self.textField.addTarget(self, action: #selector(ViewController.textFieldDidUpdate(_:)), forControlEvents: UIControlEvents.EditingChanged)

        if(doesURLExist) {
            self.textField.text = getURL()
        }
        // Demo UI Settings
    }
}

  // Text Field Delegate
func textFieldDidUpdate(textField: UITextField)
{
    // Remove Spaces
    textField.text = textField.text!.stringByReplacingOccurrencesOfString(" ", withString: "", options: [], range: nil)

    // Validate URL
    NSURL.validateUrl(textField.text, completion: { (success, urlString, error) -> Void in
        dispatch_async(dispatch_get_main_queue(), { () -> Void in
            if (success) {
              self.saveURL(urlString)
              self.webView.hidden = false
              self.textField.hidden = true 
              let request = NSURLRequest(URL: NSURL(string: urlString!)!)
              self.webView.loadRequest(request)
            } else {
                self.webView.stopLoading()
                self.webView.hidden = true
            }
        })
    })
}

不要忘記將原始函數添加到您的類中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM