我在UIViewController
上制作了一个小应用程序,我希望它有一个设置页面。
我在它上面打了一个导致UITableView
控制器的按钮,到目前为止我所拥有的只是一个用于振动的切换但是当我关闭开关时,转到main,然后返回开关是重置为原始位置('on')。
如何使状态保持不变以及在何处定义切换操作?
答案 0 :(得分:0)
您应该在开始时使用设置当前值加载UI。
在viewWillAppear
或甚至在viewDidLoad
中,您只需设置选项,它就会使视图显示已设置的数据。
答案 1 :(得分:0)
我做了一个简单的项目来演示如何保存开关状态。以下是示例代码,您可以在此处下载整个项目:https://drive.google.com/file/d/0B2_OK50NaRBpVVE4ZzhORUJJaG8/view?usp=sharing
class ViewController: UIViewController {
@IBOutlet weak var mySwitch: UISwitch!
@IBOutlet weak var stateLabel: UILabel!
let defaults = NSUserDefaults.standardUserDefaults()
let savedKey = "switch_state"
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Clear", style: .Plain, target: self, action: "clearSettings")
mySwitch.addTarget(self, action: "toggleSwitch", forControlEvents: .ValueChanged)
// Retrieve data from NSUserDefaults & update switch state and label
let switchState = defaults.boolForKey(savedKey)
mySwitch.setOn(switchState, animated: true)
self.stateLabel.text = "Current state: \(mySwitch.on)"
}
func toggleSwitch() {
// Each time we toogle switch, save switch state
defaults.setBool(mySwitch.on, forKey: savedKey)
defaults.synchronize()
// Update label
self.stateLabel.text = "Current state: \(mySwitch.on)"
}
func clearSettings() {
// Remove saved switch state
defaults.removeObjectForKey(savedKey)
}
}