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

时间:2017-01-23 16:29:59

标签: ios swift nsuserdefaults xcode8 viewdidappear

我正在实施条款&条件查看我的应用程序,用户必须接受它们继续,然后当他们接受它们时,他们不再需要通过条款&条件视图。我按照一个教程来了解如何集成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)
}

}

1 个答案:

答案 0 :(得分:3)

可能你的意思是&#34;在首次启动时显示 ViewController &#34;。

为此目的使用UserDefaults是一个好主意,但是,检查接受的术语是否应该在TermsAndConditionsViewController层,而应该在AppDelegate中 - {{1你可以决定根ViewController是application:didFinishLaunchingWithOptions还是其他ViewController(例如HomeViewController)。

<强>的AppDelegate:

TermsAndConditionsViewController

<强> TermsAndConditionsViewController:

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
}

希望这会有所帮助。