Uitableview 更改ViewController时保持原型单元的UISwitch状态
我有一个Uitableview 更改ViewController时保持原型单元的UISwitch状态,uitableview,swift,uinavigationcontroller,uiswitch,Uitableview,Swift,Uinavigationcontroller,Uiswitch,我有一个UITableViewCell子类,其中我从一个定制原型单元连接了一个UISwitch。(数据从上一个ViewController在表视图中传递) 当我更改视图控制器时,ui开关的状态将变回默认状态 在应用程序中导航时,我需要一些方法来记住交换机的状态。 我搜索了其他一些主题,但似乎没有任何东西落在我的情况下 代码如下: import UIKit class TableViewCell: UITableViewCell { @IBOutlet weak var myStaticSwi
UITableViewCell
子类,其中我从一个定制原型单元连接了一个UISwitch
。(数据从上一个ViewController在表视图中传递)
当我更改视图控制器时,ui开关的状态将变回默认状态
在应用程序中导航时,我需要一些方法来记住交换机的状态。
我搜索了其他一些主题,但似乎没有任何东西落在我的情况下
代码如下:
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(例如,您的表格单元格)查找对启用的的更改,并根据需要更新单元格标签。以下是代码。现在我需要一种方法来分别引用每个开关,而不是作为一个整体
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
}
}
我想我理解建议的方法,但我缺乏一些基本的知识。根据我的研究,模型对象是TableViewCell之外的一个类,但是我应该如何在那里存储这些数据呢?通过创建字典或其他什么?是一个很好的开始的地方。我不太了解上面的链接。这也是客观的。但我更接近我所需要的,如下所示。虽然这一次,当我访问同一个视图时,一旦一个交换机被更改,所有其他交换机都会获得相同的状态