【问题标题】:How to make a Switch keep its state after switching viewControllers in swift 4?在swift 4中切换viewControllers后如何使Switch保持其状态?
【发布时间】:2018-04-24 01:35:31
【问题描述】:

所以我有一个迷你学校项目,一开始我有一个关闭开关,想法是打开它并能够移动到其他视图控制器,但是当我回来时开关仍然打开,问题是关闭后打开应用程序时,必须关闭它。我见过其他类似的问题,但没有人询问关闭应用后如何保持关闭状态。

override func viewDidLoad() {
    super.viewDidLoad()
    switchOutlet.isOn =  UserDefaults.standard.bool(forKey: "isOnSwitch")
{

@IBAction func switchAction(_ sender: Any) {

    let isOnSwitch = UserDefaults.standard.bool(forKey: "isOnSwitch")

    if isOnSwitch == true {
        UserDefaults.standard.set(false, forKey: "isOnSwitch")
    } else { UserDefaults.standard.set(true, forKey: "isOnSwitch")}

此代码仅用于确保开关始终处于打开状态,即使是第一次进入应用程序时也是如此。

【问题讨论】:

    标签: swift viewcontroller uiswitch


    【解决方案1】:

    你的逻辑是对的。但是,viewDidLoad 只会在加载视图控制器时调用一次。如果你去后台再打开,viewDidLoad就不会再被调用了。

    UIApplicationDelegate 中有一些功能可以使用,例如applicationWillEnterForegroundapplicationWillTerminateapplicationDidBecomeActiveapplicationWillResignActiveapplicationDidEnterBackground...选择适合您场景的功能。

    或者您可以在视图控制器中添加监听UIApplicationWillEnterForeground,并在调用时更新您的开关。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多