[iOS] xib 파일 총정리!(storyboard ❌)
iOS

[iOS] xib 파일 총정리!(storyboard ❌)

728x90

루트 뷰컨트롤러 설정

1. Main.storyboard 파일 지우기

2. Info.plist 와 Targets에 스토리보드 속성 지우기

3. SceneDelegate.swift에서 루트 뷰컨트롤러 지정

        //루트 뷰 컨트롤러 설정!
        guard let scene = scene as? UIWindowScene else { return }
        
        self.window = UIWindow(windowScene: scene)
        window?.rootViewController = SplashViewController()
        window?.makeKeyAndVisible()

 

탭바+네비게이션 컨트롤러 설정

1. 탭바 아이템 설정

2. 네비게이션 컨트롤러 설정

3. 탭바로 지정할 컨트롤러 설정

import Foundation
import UIKit

class BaseTapBarController: UITabBarController, UITabBarControllerDelegate {
    
    let actionViewController = ActionViewController()
    let networkViewController = NetworkViewController()
    
    //탭바 아이템 설정
    let actionTapBarItem = UITabBarItem(title: "Action", image: nil, tag: 0)
    let networkTapBarItem = UITabBarItem(title: "Network", image: nil, tag: 1)
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        //네비게이션 컨트롤러로 설정
        let actionNetworkController = UINavigationController(rootViewController: actionViewController)
        let networkNetworkController = UINavigationController(rootViewController: networkViewController)
        actionNetworkController.tabBarItem = actionTapBarItem
        networkNetworkController.tabBarItem = networkTapBarItem
        
        //탭바로 지정할 컨트롤러 설정
        self.viewControllers = [actionNetworkController, networkNetworkController]
        
        self.delegate = self
    }
}

 

화면 전환

네비게이션 컨트롤러를 이용한 화면 전환

self.navigationController?.pushViewController(TransitionNextViewController(), animated: true)

 

네비게이션 컨트롤러를 이용한 뒤로가기

self.navigationController?.popViewController(animated: true)

 

네비게이션 컨트롤러의 RootViewController로 이동

self.navigationController?.popToRootViewController(animated: true)

 

화면 일부를 덮는 modal

self.present(TransitionNextViewController(), animated: true, completion: nil)

 

화면 전체를 덮는 modal

let nextVC = TransitionNextViewController()
        nextVC.modalPresentationStyle = .overFullScreen
        self.present(nextVC, animated: true, completion: nil)

 

새로운 윈도우로 화면 전환 ex) 로그인 화면으로 돌아가기(화면 갈아 엎기)

let splashViewController = SplashViewController()
        if let window = UIApplication.shared.windows.first{
            window.rootViewController = splashViewController
            UIView.transition(with: window, duration: 0.5, options: .transitionCrossDissolve, animations: nil)
        }else{
            splashViewController.modalPresentationStyle = .overFullScreen
            self.present(splashViewController, animated: true, completion: nil)
        }
728x90