仅在首次发布时显示视图 – Swift 3

我在我的应用程序中实施了条款和条件视图,用户必须接受他们才能继续,当他们接受他们时,他们不必再通过条款和条件视图。 我跟着一个关于如何集成UserDefaults并在本地存储值的教程,如果有人确实接受这些条款。 但是我坚持把它实现到根视图控制器。 特别贴在我的viewDidAppear函数。 if和else语句中的含义是什么?

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) } 

}

可能,你的意思是“仅在首次启动时显示ViewController ”。

为此,使用UserDefaults是一个好主意,但是,检查接受的术语是否应该不在 TermsAndConditionsViewController层中,而应该在AppDelegate – 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) } //... } 

希望这有助于。