viewdidload 中的 nsuserdefaults 禁用隐藏视图

nsuserdefaults in viewdidload disable hidding views

我正在使用 nsuserdefaults 保存一些 bools 数据,但我遇到了问题: 在我的情节提要中,我检查了 'hidden' 的视图,但是当我使用我的应用程序时,该视图不是 'hidden' 我注意到这是因为当我删除它时我的 userdefaults 在 viewdidload: 中,视图被隐藏。 有没有办法将其设置为隐藏? 我在 viedidload 中尝试设置隐藏但不起作用。 这是我的代码:

override func viewDidLoad() {
    super.viewDidLoad()
    // viewnote2.hidden = true
     let boolsKey = NSUserDefaults.standardUserDefaults()
     viewnote2.hidden = boolsKey.boolForKey("bool2")
 }

这就是这个观点的全部内容

这就像这里:

boolsKey.boolForKey("bool2")

返回 false,因此您可以将 viewnote2 设置为如下所示:

viewnote2.hidden = false

您为 "bool2" 保存的值显然不正确。

要向您使用的 boolsKey 添加值

boolsKey.setBool(value: Bool, forKey: String)

因此,当用户检查 'hidden' 以查看程序时,程序应该 运行

boolsKey.setBool(false, forKey: "bool2")

然后你就可以像以前那样阅读它了

viewnote2.hidden = boolsKey.boolForKey("bool2")

UI 上的某些时间更改在 viewDidLoad 上不起作用,请尝试隐藏 viewDidAppear 上的视图。还要检查您是否为 UserDefaults.

中的 bool2 键设置了 Bool

如果您还没有在 UserDefaults 中设置 Bool 值,那么您需要先像这样设置。

let boolsKey = NSUserDefaults.standardUserDefaults()
boolsKey.setBool(false,forKey:"bool2")
boolsKey.synchronize()

编辑: 用于在 AppDelegate.

中设置 bool
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {        
    let defaults = NSUserDefaults.standardUserDefaults()
    let boolsKey = defaults.boolForKey("bool2")
    if boolsKey {
        defaults.setBool(false, forKey: "bool2")
        defaults.synchronize()
    }
    return true
}

非常感谢@NDoc!首先我试图隐藏 viewDidAppear 但是当我启动应用程序时,我们看到 1 秒前的视图被隐藏了。 然后,我尝试将其设置为 NSUserdefault on viewDidLoad with
boolsKey.setBool(false,forKey:"bool2")
boolsKey.synchronize()
像那样:

    if (boolsKey.boolForKey("bool2") == true){

    boolsKey.setBool(true,forKey:"bool2")
    boolsKey.synchronize()
    } else {
        boolsKey.setBool(false,forKey:"bool2")
        boolsKey.synchronize()
    }

对我有用:-)