好的,所以我已经在我的应用程序中添加了一个视图,要求用户接受或拒绝服务条款。我有它,所以当他们单击接受时,它将键“ 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")
}
虽然运行正常,但必须重新打开该应用程序。
我尝试使用它,以便按钮在接受这些条款的同时(在更新密钥之后)同时打开主视图,但它给了我以下错误。
致命错误:解开可选值(lldb)时意外发现nil
我以为这意味着它想再次重新打开启动条款视图,因此我尝试将所有代码从viewDidLoad移到viewWillAppear,以便每次都进行检查,但它只给出相同的错误。(在我在这里发布之前,这是一个很长的尝试)。
我看过这里的一些帖子,但是很多帖子都在ObjC中,或者只是没有给我任何解决方案或任何形式的帮助来试图找到自己。
当您呈现术语视图控制器时,您应该只需要在完成使用后将其关闭即可。您没有显示任何其他代码,因此我假设您的“ home”视图控制器正在等待在下面显示(您无需尝试再次显示它)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句