Skip to content

Instantly share code, notes, and snippets.

@yajamon
Created June 18, 2018 13:01
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yajamon/f7b97d278d9ef4e6fa1fb6a21b104182 to your computer and use it in GitHub Desktop.
Save yajamon/f7b97d278d9ef4e6fa1fb6a21b104182 to your computer and use it in GitHub Desktop.
This UITextField is save to UserDefaults when editingDidEnd, can restore text from UserDefaults, and can edit key in Inspector of Interface-Builder.
import UIKit
class RestorableTextField: UITextField {
@IBInspectable var defaultsKey: String = ""
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.addTarget(self, action: #selector(saveToUserDefaults(_:)), for: .editingDidEnd)
}
@objc func saveToUserDefaults(_ sender:RestorableTextField) {
guard defaultsKey != "" else { return }
UserDefaults.standard.set(sender.text ?? "", forKey: defaultsKey)
// this method is unnecessary and shouldn't be used.
// UserDefaults.standard.synchronize()
}
func restoreByUserDefaults() {
guard defaultsKey != "" else { return }
guard let text = UserDefaults.standard.string(forKey: defaultsKey) else { return }
guard text != "" else { return }
self.text = text
}
}
@yajamon
Copy link
Author

yajamon commented Jun 18, 2018

Swift 4.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment