好的,所以我在我的应用程序中添加了一个 View ,要求用户接受或拒绝服务条款。我有它,所以当他们单击接受时,它会将键“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")
}
虽然工作正常,但他们必须重新打开应用程序。
我试着让它在接受这些条款的同时打开主视图( key 更新后),但它给了我以下错误。
fatal error :在展开可选值 (lldb) 时意外发现 nil
我假设这意味着它想要再次重新打开启动条款 View ,所以我尝试将所有代码从 viewDidLoad 移动到 viewWillAppear,以便它每次都进行检查,但它只是给出相同的错误。 (在我发布到这里之前,这是一个很长的尝试)。
我看过这里的一些帖子,但其中很多都是在 ObjC 中,或者只是没有给我一个解决方案或任何形式的帮助来尝试自己找到一个。
最佳答案
当您展示您的条款 View Controller 时,您应该能够在完成后将其关闭。您没有显示任何其他代码,所以我假设您的“主页” View Controller 正在等待在下面显示(您不需要再次尝试显示它)。
关于swift - 将键更改为 true 然后快速显示 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37230506/