viewdidload中的nsuserdefaults禁用隐藏视图

时间:2016-08-26 14:23:42

标签: swift boolean nsuserdefaults

我正在使用nsuserdefaults保存一些bool数据,但我遇到了问题: 在我的故事板中,我检查了“隐藏”的视图,但是当我使用我的应用程序时,视图不是“隐藏”而且我注意到它是因为我的用户默认在viewdidload:当我删除它时,视图被隐藏。 有没有办法将它隐藏起来? 我尝试在viedidload设置隐藏但不起作用。 这是我的代码:

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

这都是关于这个观点的

4 个答案:

答案 0 :(得分:2)

UI上的某些时间更改对viewDidLoad无效,请尝试隐藏viewDidAppear上的视图。另请检查您是否在Bool中为bool2键设置了UserDefaults值。

如果您未在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
}

答案 1 :(得分:1)

要为boolsKey添加值,请使用

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

因此,当用户检查“隐藏”以查看程序应该运行时

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

之后你可以像读到的那样读取它

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

答案 2 :(得分:0)

这就像这里:

boolsKey.boolForKey("bool2")

返回false,因此您可以将viewnote2看作是这样设置的:

viewnote2.hidden = false

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

答案 3 :(得分:0)

非常感谢@NDoc!首先,我试图隐藏在viewDidAppear上,但是当我启动应用程序时,我们会在隐藏前1秒钟看到该视图。 然后,我尝试在NSUserdefault上用viewDidLoad设置它                                                                                                                                                   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()
    }

它对我有用: - )