将密钥更改为true,然后在swift

时间:2016-05-14 18:40:35

标签: swift

好的,所以我在我的应用程序中添加了一个视图,要求用户接受或拒绝服务条款。我有它,所以当他们点击接受时,它会将关键字“TermsAccepted”更改为true。如果他们关闭应用程序并重新打开它,则会授予他们访问权限。但是,我希望能够在不重新打开应用程序的情况下授予他们访问权限。

所以在我的ViewController(主屏幕)中,在我的viewDidLoad中,我有以下内容:

if NSUserDefaults.standardUserDefaults().boolForKey("TermsAccepted") {
  // They've been accepted, do nothing.
} else {
  let termsView = self.storyboard?.instantiateViewControllerWithIdentifier("FirstLaunchTerms") as! FirstLaunchTermsView
  self.presentViewController(termsView, animated: true, completion: null
}

在'LaunchTermsView'中,我有以下代码来接受这些条款。

@IBAction func acceptTerms(sender : AnyObject)
 {
    NSUserDefaults.standardUserDefaults().setBool(true, forKey: "TermsAccepted")
 }

这个工作正常,但他们必须重新打开应用程序。

我试着这么做,所以按钮在接受这些条款的同时打开主视图(更新密钥后),但它给了我以下错误。

致命错误:在展开Optional值(lldb)时意外发现nil

我认为这意味着它想要再次重新打开启动条款视图,所以我尝试将所有代码从viewDidLoad移动到viewWillAppear,以便每次检查,但它只是给出了相同的错误。 (在我发布之前,这是一个很长的尝试。)

我看了一下这里的一些帖子,但很多人都在ObjC,或者只是没有给我一个解决方案或任何形式的帮助,试图找到一个自己。

1 个答案:

答案 0 :(得分:1)

当您正在展示您的条款视图控制器时,您应该能够在完成它时将其解雇。你没有显示任何其他代码,所以我假设你的家庭'视图控制器等待在下面显示(你不需要再次尝试显示它)。