2017-01-23 3 views
0

私は利用規約&の条件ビューを自分のアプリに実装しています。ユーザーはそれらを受け入れてから受け入れなければなりません。 &条件ビュー。 UserDefaultsを統合し、誰かがその条件に同意した場合に値をローカルに格納する方法に関するチュートリアルに続きました。しかし、私は根本的なビューコントローラにそれを実装するつもりです。特に私のviewDidAppear機能に固執しています。 ifとelse文には何が入りますか?最初の起動時のみ表示 - スウィフト3

class TermsAndConditionsViewController: UIViewController, UITextViewDelegate {

@IBOutlet weak var termsTextView: UITextView! { 
    didSet { 
     termsTextView.delegate = self 
    } 
} 

@IBOutlet weak var acceptButton: UIButton! { 
    didSet { 
     acceptButton.isHidden = true 
    } 
} 

func scrollViewDidScroll(_ scrollView: UIScrollView) { 
    acceptButton.isHidden = scrollView.contentOffset.y + scrollView.bounds.height < scrollView.contentSize.height 
} 

override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated) 
    if UserDefaults.standard.bool(forKey: "termsAccepted") { 

    } else { 

    } 
} 

@IBAction func acceptButtonTapped(_ sender: Any) { 
    performSegue(withIdentifier: "toPeekView", sender: sender) 
} 

}

+4

[最初の起動時にビューを表示するにはどうすればよいですか?](http://stackoverflow.com/questions/12878162/how-can-i-show-a-view-on-the-first起動のみ) – JAL

+0

ビューは最初のViewControllerに表示されるはずですか?それとも分離されたViewControllerですか? –

+0

それがルートビューコントローラに表示され、条件が受け入れられた場合は、それらが存在するかどうかを確認し、次のビューコントローラを新しいルートビューコントローラにする – Gar

答えて

2

おそらく、あなたは "最初の起動にのViewControllerを表示" を意味します。この目的のためにUserDefaultsを使用して

は良いアイデアである、しかし、用語が受け入れられたかどうかをチェックすることはないではなく、それはAppDelegateにする必要があり、TermsAndConditionsViewController層であるべき - application:didFinishLaunchingWithOptions、あなたがルートのViewControllerかどうかで決めることができますTermsAndConditionsViewControllerまたは他のViewController(たとえばHomeViewController)である必要があります。

AppDelegate:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    let storyboard = UIStoryboard(name: "Main", bundle: nil) 

    let rootViewController = storyboard.instantiateViewController(withIdentifier: UserDefaults.standard.bool(forKey: "termsAccepted") ? "termsViewControllerID" : "homeViewControllerID") 

    window?.rootViewController = rootViewController 

    return true 
} 

TermsAndConditionsViewController:これは助け

class TermsAndConditionsViewController: UIViewController { 
    //... 

    @IBAction func acceptButtonTapped(_ sender: Any) { 
     UserDefaults.standard.set(true, forKey: "termsAccepted") 

     performSegue(withIdentifier: "toPeekView", sender: sender) 
    } 

    //... 
} 

希望。

関連する問題