2016-03-06 49 views
0

我在UIViewController上做了一个小应用程序,我希望它有一个设置页面。UIViewController&UITableViewController - 设置页面

我在它上面做了一个按钮,导致一个UITableView控制器,到目前为止我所拥有的只是一个振动开关,但是当我关闭开关时,转到main,并返回开关重置为原始位置('开')。

我该如何让它保持状态,以及在哪里定义切换操作?

+0

你使用NSUserDefaults吗? – UlyssesR

回答

0

您应该在开始时使用设置当前值加载UI。

viewWillAppear甚至在viewDidLoad,你可以只设置选项,它会使视图显示数据为设置。

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) 
    } 

} 
相关问题