목차
스토리보드가 아닌 코드로 View를 구성할 때, Window rootViewController 수정이 필요 → info.plist 수정❗️
<코드설명>
AppDelegate, SceneDelegate
if문에서 AuthManager.shared.isSignIn의미
AuthManager은 싱글턴 패턴으로 사용된다.
로그인이 되어 있는지 안되어있는지에 따라 보이는 화면을 다르게 하기 위해 if문을 사용했다. 지금은 false로 놔둔상태~
window.makeKeyAndVisible() 의미
prefersLargeTitles 의미
Boolean속성으로 navigation bar에서 title을 표시해야하는지 여부를 가지고 있는 프로퍼티
true라면, navigation bar에 표시하지 않고 큰 글꼴을 사용해서 표시할 수 있다.
false라면, navigation bar에 인라인으로 표시된다.
그리고 largeTitleDisplayMode를 통해 title을 어떻게 표시할지 구성할 수 있다.
해당 프로퍼티는 prefersLargeTitles가 false라면 효과가 없다.
prefersLargeTitles 사용 전
prefersLargeTitles 사용 후
import UIKit
class TabBarViewController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
let vc1 = HomeViewController()
let vc2 = SearchViewController()
let vc3 = LibraryViewController()
vc1.title = "Browse"
vc2.title = "Search"
vc3.title = "Library"
//view controller에서의 navigation code
vc1.navigationItem.largeTitleDisplayMode = .always
vc2.navigationItem.largeTitleDisplayMode = .always
vc3.navigationItem.largeTitleDisplayMode = .always
//create view controllers
let nav1 = UINavigationController(rootViewController: vc1)
let nav2 = UINavigationController(rootViewController: vc2)
let nav3 = UINavigationController(rootViewController: vc3)
//tabbar code
nav1.tabBarItem = UITabBarItem(title: "Home", image: UIImage(systemName: "house"), tag: 1)
nav2.tabBarItem = UITabBarItem(title: "Search", image: UIImage(systemName: "magnifyingglass"), tag: 1)
nav3.tabBarItem = UITabBarItem(title: "Library", image: UIImage(systemName: "music.note.list"), tag: 1)
nav1.navigationBar.prefersLargeTitles = true
nav2.navigationBar.prefersLargeTitles = true
nav3.navigationBar.prefersLargeTitles = true
//Use this method to update or replace the current view controller stack without pushing or popping each controller explicitly.
setViewControllers([nav1, nav2, nav3], animated: false)
}
}