2016-05-14 4 views
1

OK、私は利用規約に同意するか拒否するかを尋ねるビューをアプリケーションに追加しました。私はそれを受け入れると、それはキー "TermsAccepted"をtrueに変更します。彼らは、アプリケーションを閉じて、それを再び開くと、彼らにアクセスを与える。しかし、最初にアプリを再起動しなくてもアクセスできるようにしたいと思います。 「LaunchTermsView」私は、彼らは条件を受け入れたときのために、次のコードを持ってキーをtrueに変更してすぐにビューを表示します

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 
} 

だから、私のViewController(メイン画面)で、私のviewDidLoadで、私は次のよう持っています。

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

これはうまくいきますが、アプリケーションを再オープンする必要があります。

ボタンがメインビューを開くのと同時に(キーが更新された後に)受け入れられますが、次のエラーが表示されるようにしました。

致命的なエラー:予期せず、私は、これはそれが再オープンする打ち上げの用語は再び表示望むことを意味したと仮定(lldb)

オプションの値をアンラップしながら、nilを見つけたので、私はのviewDidLoadからすべてのコードを移動しようとしましたviewWillAppearには毎回チェックするので、同じエラーが出ます。 (これは私がここに投稿する前に長いショットだった)。

私はここにいくつかの記事を見ましたが、それらの多くはObjCにあったか、自分自身を見つけようとするための解決策や助けを私に与えませんでした。

答えて

1

用語ビューコントローラを表示しているので、操作が完了したらすぐに解除することができます。あなたは他のコードを表示しないので、あなたの「家庭」ビューコントローラが下に表示されるのを待っていると仮定しています(再度表示する必要はありません)。

+0

メインコントローラは初期のビューなので、下に表示されるのを待っていると思いますか?私は 'self.dismissViewControllerAnimated'を試みましたが、それは私にも同じエラーを与えました。これはかなり奇妙でした。 –

+0

心配しないで!以前の悪い試みからリンクを削除するのを忘れていました。ワインありがとう!私はなぜあなたが「却下」が何かを私の心に震わせると言っているのか分からないが、ありがとう。 :D –

関連する問題