gpt4 book ai didi

ios - 如何将 UITabBarController 导航到 ViewController?

转载 作者:行者123 更新时间:2023-11-28 11:41:50 27 4
gpt4 key购买 nike

我在里面有一个 TabBarController 我正在加载两个 ViewControllers

import UIKit

class TabBarViewController: UITabBarController {

override func viewDidLoad() {
super.viewDidLoad()

}
}

图片:

enter image description here

class AttendanceViewController: UIViewController,UIApplicationDelegate,
UICollectionViewDelegateFlowLayout,UINavigationControllerDelegate,
CLLocationManagerDelegate,UIImagePickerControllerDelegate {

override func viewWillAppear(_ animated: Bool) {
if Auth.auth().currentUser?.uid == nil {
//Below code is not working
let vc = UIStoryboard.init(name: "Main", bundle: Bundle.main)
.instantiateViewController(withIdentifier: "LoginViewController") as? LoginViewController
self.navigationController?.pushViewController(vc!, animated: true)
print("user is not login in redirect to login page")
return
}else{
print("User Successfully loginedin")
}
}

}

Note : I have two view controller like AttendanceViewController and TaskViewController I want to check if user is not login then I want to redirect to my LoginViewController I tried above code it's was not working

最佳答案

嘿,我刚刚创建了一个示例,它将帮助您:-

我只是使用 userdefaults 来保存 loginState

这里是:-

1).任务 View Controller

我刚刚在其中创建了一个注销按钮

import UIKit

class TaskViewController: UIViewController {


@IBOutlet weak var signOutButton: UIButton!

override func viewDidLoad() {
super.viewDidLoad()

// Do any additional setup after loading the view.
}

override func viewDidLayoutSubviews() {
signOutButton.layer.cornerRadius = signOutButton.layer.frame.height/2
}



@IBAction func signOutButtonTapped(_ sender: Any) {

UserDefaults.standard.set(false, forKey: "isUserLoggedIn") // here I remove the boolean value
UserDefaults.standard.synchronize()
let storyBoard = UIStoryboard(name: "Login", bundle: nil)
let loginVc = storyBoard.instantiateViewController(withIdentifier: "LoginViewController") as! LoginViewController
let rootVc = UINavigationController(rootViewController: loginVc)
UIApplication.shared.keyWindow?.rootViewController = rootVc

}



}

2). AttendanceViewController - 我没有在里面创建任何东西

import UIKit

class AttendanceViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()

// Do any additional setup after loading the view.
}


}

这两个 Controller 都在 TabBarController 里面,它是 HomeController

import UIKit

class HomeController: UITabBarController {

override func viewDidLoad() {
super.viewDidLoad()


}

}

我在 Main.storyboard 文件中创建了它:- enter image description here

并在 login.storyboard 文件中创建了 LoginViewController enter image description here

LoginViewController:- 这里保存了 loginState

import UIKit

class LoginViewController: UIViewController {

@IBOutlet weak var loginButton: UIButton!


override func viewDidLoad() {
super.viewDidLoad()

// Do any additional setup after loading the view.
}

override func viewDidLayoutSubviews() {
loginButton.layer.cornerRadius = loginButton.layer.frame.height/2
}


@IBAction func loginButtonTapped(_ sender: Any) {

let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let viewController = mainStoryboard.instantiateViewController(withIdentifier: "HomeController") as! HomeController
UserDefaults.standard.set(true, forKey: "isUserLoggedIn")
UserDefaults.standard.synchronize()
UIApplication.shared.keyWindow?.rootViewController = viewController

}

}

最后在 Appdelegate.swift 中检查 didFinishLaunchingWithOptions 中的登录状态,如下所示:-

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

let userLoginStatus = UserDefaults.standard.bool(forKey: "isUserLoggedIn")
print(userLoginStatus)

if(userLoginStatus)
{
let mainStoryBoard = UIStoryboard(name: "Main", bundle: nil)
let centerVC = mainStoryBoard.instantiateViewController(withIdentifier: "HomeController") as! HomeController
window!.rootViewController = centerVC
window!.makeKeyAndVisible()
} else {

let mainStoryBoard = UIStoryboard(name: "Login", bundle: nil)
let centerVC = mainStoryBoard.instantiateViewController(withIdentifier: "LoginViewController") as! LoginViewController
window!.rootViewController = centerVC
window!.makeKeyAndVisible()
}

return true
}

这是完整的项目 - https://www.dropbox.com/s/3d34raovyx6orda/saveLogin.zip?dl=0

关于ios - 如何将 UITabBarController 导航到 ViewController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53496287/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com