[英]How to store my first textfield to not ask for the second time in swift
Thanks in advanced for the help. 非常感谢您的帮助。
I created a UITextField that when the user write a link and enter after that my textfield disappear and my webView Appear. 我创建了一个UITextField,当用户编写一个链接并在此之后输入时,我的文本字段消失了,我的webView出现了。
What i am trying to do is, when the user write the first time their link, the textfield save that link and when the user open again the App, the web view open directly from the last link what user wrote textfield. 我想做的是,当用户第一次编写其链接时,文本字段将保存该链接,而当用户再次打开该应用程序时,Web视图将直接从最后一个链接打开用户写文本字段的内容。 basically the stored link should run the second time. 基本上,存储的链接应该第二次运行。
Here is all my code, 这是我所有的代码,
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
}
}
here is my project in github: enter link description here 这是我在github中的项目: 在此处输入链接描述
You should save the entered string to user defaults. 您应该将输入的字符串保存为用户默认值。 When your app opens you should check user defaults to see if there's already a saved string. 当您的应用程序打开时,您应该检查用户默认设置,以查看是否已经保存了字符串。
Swift 2 code to save your URL to user defaults: Swift 2代码将您的URL保存为用户默认设置:
NSUserDefaults.standardUserDefaults().setObject(urlString!, forKey: "EnteredURLString")
Swift 2 code to check whether there's a saved URL string: Swift 2代码检查是否存在保存的URL字符串:
if let urlString = NSUserDefaults.standardUserDefaults().stringForKey("EnteredURLString") {
}
You'll want to check if the url exists first by calling doesURLExist
, if it does, you opt out of presenting that textfield. 您将要通过调用doesURLExist
来检查url是否首先存在,如果存在,则选择不显示该文本字段。 If it does not exist, call saveURL
. 如果不存在,请调用saveURL
。 NSUserDefaults
provides a simple means to store lightweight data. 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
}
So your class should look something like: 因此,您的课程应类似于:
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
}
})
})
}
Don't forget to add the original functions to your class. 不要忘记将原始函数添加到您的类中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.