我在UIViewController
上做了一個小應用程序,我希望它有一個設置頁面。UIViewController&UITableViewController - 設置頁面
我在它上面做了一個按鈕,導致一個UITableView
控制器,到目前爲止我所擁有的只是一個振動開關,但是當我關閉開關時,轉到main,並返回開關重置爲原始位置('開')。
我該如何讓它保持狀態,以及在哪裏定義切換操作?
我在UIViewController
上做了一個小應用程序,我希望它有一個設置頁面。UIViewController&UITableViewController - 設置頁面
我在它上面做了一個按鈕,導致一個UITableView
控制器,到目前爲止我所擁有的只是一個振動開關,但是當我關閉開關時,轉到main,並返回開關重置爲原始位置('開')。
我該如何讓它保持狀態,以及在哪裏定義切換操作?
您應該在開始時使用設置當前值加載UI。
在viewWillAppear
甚至在viewDidLoad
,你可以只設置選項,它會使視圖顯示數據爲設置。
我做了一個簡單的項目來演示如何保存開關狀態。這裏是示例代碼,你可以在這裏下載整個項目: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)
}
}
你使用NSUserDefaults嗎? – UlyssesR