![](/img/trans.png)
[英]How can i send different users to separate view controllers using firebase and Xcode
[英]How can I programatically move users between View Controllers in Xcode?
一旦用戶登錄到我的應用程序,下面的 function 應該會自動將用戶重定向到名為“TabViewController”的視圖 Controller。
transitionToHome() {
let tabViewController = storyboard?.instantiateViewController(withIdentifier: Constants.Storyboard.TabViewController) as? TabViewController
view.window?.rootViewController = tabViewController
view.window?.makeKeyAndVisible()
}
目前,當這個 function 運行時,它只會產生一個全黑屏,而不是將用戶帶到 TabViewController。
這是我的 ViewController 的 Xcode 的屏幕截圖。
這是我的“TabViewController.swift”文件中的代碼
import UIKit
class TabViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
}
這是我在“常量”文件中對 ViewController 的聲明
import Foundation
struct Constants {
struct Storyboard {
static let homeViewController = "HomeVC"
static let TabViewController = "TabVC"
}
}
在解釋為什么會發生這種情況以及如何真正讓它重定向到 TabViewController 時,任何幫助將不勝感激,謝謝!
將 UITabViewController 設為初始視圖 Controller。 然后,在應用程序啟動后,檢查用戶是否在您的選項卡 controller 的第一個視圖 controller 中登錄。 如果不是,則以編程方式顯示登錄 controller。 當他們成功登錄時,關閉登錄 controller 回到第一個視圖 controller。
示例代碼(其中 HomeViewController 是選項卡控制器的第一個視圖 controller):
class HomeViewController: UIViewController {
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
if !userIsLoggedIn {
presentLoginController()
}
}
private var userIsLoggedIn: Bool {
false // placeholder - need to compute this elsewhere, otherwise login controller will always present
}
private func presentLoginController() {
guard let loginController = storyboard?.instantiateViewController(identifier: "LoginVC") else {
return
}
loginController.modalPresentationStyle = .fullScreen
present(loginController, animated: false)
}
}
class LoginViewController: UIViewController {
@IBAction func loginTapped(_ sender: Any) {
if loginCredentialsCorrect {
dismiss(animated: true)
}
}
private var loginCredentialsCorrect: Bool {
true // placeholder
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.