我有一个UITableViewCell
子类,我在其中连接了一个来自自定义原型单元的UISwitch
。(数据从以前的视图控制器在表视图中传递)
当我更改视图控制器时,UISwitch
的状态将更改回默认值我需要某种方法来在浏览应用程序时记住开关的状态。我已经搜索了其他一些主题,但似乎没有什么落入我的情况。
这是代码:
import UIKit
class TableViewCell: UITableViewCell {
@IBOutlet weak var myStaticSwitch: UISwitch!
@IBOutlet weak var cellLabel: UILabel!
@IBAction func mySwitch(sender: UISwitch) {
if myStaticSwitch.on {
self.cellLabel.text = "on"
//Do other things
}
else {
self.cellLabel.text = "off"
//Do other things
}
}
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
你应该有一个模型对象,用于确定表示它的 UI 的状态。 此对象可以保存到磁盘,与核心数据一起持久化,甚至同步到远程 Web 服务。
下次需要显示与对象相关的任何 UI 时,始终可以检查其属性以确定要显示的内容。 然后,您的 UI 操作方法只需更新模型表示形式:
@IBAction func mySwitch(sender: UISwitch) {
myModelObject.enabled = myStaticSwitch.on
}
然后,UI(例如,表格单元格)会查找对enabled
所做的更改,并根据需要更新cellLabel
。
这里是代码。现在我需要一种方法来单独引用每个开关,而不是作为一个整体。
import UIKit
class TableViewCell: UITableViewCell {
@IBOutlet weak var myStaticSwitch: UISwitch!
@IBAction func mySwitch(sender: UISwitch) {
myStaticSwitch.on = (sender as UISwitch).on //Bool
NSUserDefaults.standardUserDefaults().setBool(myStaticSwitch.on, forKey: "autoAdjustSettings")
NSUserDefaults.standardUserDefaults().synchronize()
}
override func awakeFromNib() {
super.awakeFromNib()
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
myStaticSwitch.on = NSUserDefaults.standardUserDefaults().boolForKey("autoAdjustSettings")
// Configure the view for the selected state
}
}