我正在使用nsuserdefaults保存一些bool数据,但我遇到了问题:
在我的故事板中,我检查了“隐藏”的视图,但是当我使用我的应用程序时,视图不是“隐藏”而且我注意到它是因为我的用户默认在viewdidload:
当我删除它时,视图被隐藏。
有没有办法将它隐藏起来?
我尝试在viedidload
设置隐藏但不起作用。
这是我的代码:
override func viewDidLoad() {
super.viewDidLoad()
// viewnote2.hidden = true
let boolsKey = NSUserDefaults.standardUserDefaults()
viewnote2.hidden = boolsKey.boolForKey("bool2")
}
这都是关于这个观点的
答案 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()
}
它对我有用: - )