好的,所以我在我的应用程序中添加了一个视图,要求用户接受或拒绝服务条款。我有它,所以当他们点击接受时,它会将关键字“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,或者只是没有给我一个解决方案或任何形式的帮助,试图找到一个自己。
答案 0 :(得分:1)
当您正在展示您的条款视图控制器时,您应该能够在完成它时将其解雇。你没有显示任何其他代码,所以我假设你的家庭'视图控制器等待在下面显示(你不需要再次尝试显示它)。