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