Эй, я только что создал пример, он поможет вам: -
Я просто использую userdefaults
, чтобы сохранить loginState
Вот: -
1).TaskViewController
Я только что создал кнопку signOut
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.
}
}
Оба этих контроллера находятся внутри TabBarController
, то есть HomeController
import UIKit
class HomeController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
}
}
Я создал его в Main.storyboard
файл: -
И LoginViewController, созданный в login.storyboard
файл
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
проверьте loginState в 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