如何使我在 UIAlertController 内的 UITextField 中输入的数据通过 Swift 中的重置持续存在?
Posted
技术标签:
【中文标题】如何使我在 UIAlertController 内的 UITextField 中输入的数据通过 Swift 中的重置持续存在?【英文标题】:How to make data I enter in a UITextField inside a UIAlertController persist through resets in Swift? 【发布时间】:2015-04-25 16:58:20 【问题描述】:我一直在尝试在我的浏览器应用程序中集成 Pinboard 书签视图(通过解析 RSS 提要并将其显示在 TableView 中)。要获取提要的用户名和 API 令牌,我在我的应用程序的设置视图中有一个 UIAlertController。输入的详细信息会通过会话保留,但如果我从多任务视图中强制退出应用程序,则会删除详细信息。我怎样才能让他们留下来?
这是我用于 UIAlertController 的代码:
@IBAction func pinboardUserDetailsRequestAlert(sender: AnyObject)
//Create the AlertController
var pinboardUsernameField :UITextField?
var pinboardAPITokenField :UITextField?
let pinboardUserDetailsSheetController: UIAlertController = UIAlertController(title: "Pinboard Details", message: "Please enter your Pinboard Username and API Token to access your bookmarks", preferredStyle: .Alert)
//Add a text field
pinboardUserDetailsSheetController.addTextFieldWithConfigurationHandler((usernameField: UITextField!) in
usernameField.placeholder = "Username"
var parent = self.presentingViewController as! ViewController
usernameField.text = parent.pinboardUsername
pinboardUsernameField = usernameField
)
pinboardUserDetailsSheetController.addTextFieldWithConfigurationHandler((apiTokenField: UITextField!) in
apiTokenField.placeholder = "API Token"
var parent = self.presentingViewController as! ViewController
apiTokenField.text = parent.pinboardAPIToken
pinboardAPITokenField = apiTokenField
)
pinboardUserDetailsSheetController.addAction(UIAlertAction(title: "Cancel", style: .Cancel, handler: nil))
pinboardUserDetailsSheetController.addAction(UIAlertAction(title: "Done", style: .Default, handler: (action) -> Void in
// Now do whatever you want with inputTextField (remember to unwrap the optional)
var parent = self.presentingViewController as! ViewController
parent.pinboardAPIToken = pinboardAPITokenField?.text
parent.pinboardUsername = pinboardUsernameField?.text
))
//Present the AlertController
self.presentViewController(pinboardUserDetailsSheetController, animated: true, completion: nil)
【问题讨论】:
如果要持久化的数据比较简单,使用NSUserDefaults,如果比较复杂,使用CoreData 我认为这很简单,它只是 2 个字符串变量(1 个用于用户名,1 个用于 API 令牌)。我该如何使用 NSUserDefaults 呢? 我同意,但我不确定安全性以及是否应该使用 NSUserDefaults 存储此类内容。只是开始,NSUserDefaults 非常简单,只需几行代码。 它现在正在使用几行 NSUserDefaults :) 虽然我对 NSXMLParser 有一些问题,但我会将它作为一个单独的问题发布。谢谢波特兰 :) 【参考方案1】:该问题已由 Portland Runner 在 cmets 中回答。有效的解决方案是使用 NSUserDefaults 保存文本。
感谢波特兰跑者! :)
【讨论】:
以上是关于如何使我在 UIAlertController 内的 UITextField 中输入的数据通过 Swift 中的重置持续存在?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 SWIFT 中不执行任何操作就关闭 UIAlertController?
如何从 Appdelegate 显示 UIAlertController
如何在Objective C中通过UIView获取UIAlertController?
在swift中,如何在顶部保持一个UIViewController().view?比如UIAlertController