화면 전환과 관련된 코드 설명을 다른 파일로 나누어 구현합니다.

10165 단어 XcodeiOSSwift

소개



지금까지 나는 Main.storyboard 에서 ViewController끼리를 화면 전이시키고있었습니다.

하지만 이번에는 1つのStoryboardに1つのViewControllerStoryboard Reference를 사용하여 화면 전환.

라고 할까, 원래 Storyboardを使用せずにコードで画面遷移 라고 하는 흐름이 되고 있습니다.

그래서 이번에는 Storyboard를 사용하지 않고 코드만으로 화면 전환을 구현하자는 느낌입니다.

그럼 조속히, 실장해 가자! ViewController로 화면 전환 코드를
직접 쓰면 또 새로운 문제가 떠오릅니다 ↓
츠네코, 그것 ViewController 아니 ..., FatViewController 또는 ....

그럼, 도대체 어떻게 하면 좋을까 하면 제목에도 쓰여 있는 것처럼画面遷移に関係あるコードの記述を別ファイルに分けて実装 합니다.

구현하기 전에



이번에는 코드베이스로 화면을 표시하고 싶으므로 Main.storyboard를 삭제합니다.
하지만 단지 삭제하는 것만으로는 에러가 되므로 여러가지로 설정해 갑니다.

그 전에, 우선은 SceneDelegate 를 이번은 사용하지 않으므로 삭제해 갑니다.
iOS13에서 SceneDelegate를 사용하지 않고 앱 만들기

준비 흐름



그렇다면 SceneDelegate를 삭제하면 즉시 Main.storyboard를 삭제합시다.

1.Main.storyboard 삭제



파일별로 삭제하려면 Move to Trash를 선택합니다.


2.info.plist의 'Main storyboard file base name'을 비워 둡니다.



처음에는 Main 가 되어 있으므로 이 부분을 공백으로 합시다.

이것으로 준비 완료입니다.

구현해 간다



우선 새롭게 Router.swift를 만들어
거기에 初期画面を表示するメソッド 를 기술해 갑니다.

그리고 이번에는 Storyboard 로 앱 화면을 만듭니다.

Router.swift
import UIKit

final class Router {
    // 初期画面を表示するメソッド
    static func showRoot(window: UIWindow) {
        let firstVC = UIStoryboard(name: "First", bundle: nil).instantiateInitialViewController() as! FirstViewController
        let navFirstVC = UINavigationController(rootViewController: firstVC)
        window.rootViewController = navFirstVC
        window.makeKeyAndVisible()
    }
}

그리고 AppDelegate.swift 에서 방금 만든 메소드를 호출합니다.

AppDelegate.swift

import UIKit

@main
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        let window = UIWindow(frame: UIScreen.main.bounds)
        self.window = window
        Router.showRoot(window: window)
        return true
    }
}

끝나면 스토리보드에서 앱 화면을 만듭니다.

그럼, 여기에서 빌드 해 봅시다.

자신이 만든 앱 화면이 표시되면 성공입니다!
나는 이런 화면으로 만들었다.


화면 천이하겠습니다.



버튼을 탭하면 화면 천이라는 느낌으로 합니다.

먼저 화면 전환 대상 SecondViewController.swift를 만들어 앱 화면을 만듭니다.画面遷移するためのメソッド 를 방금 만든 Router.swift 파일에 기술해 갑시다.

또한 前のViewControllerがNavigationControllerを使用していた場合を想定してのメソッド도 동시에 만들어 갑니다.

Router.swift
    // 次の画面に遷移するためのメソッド
    static func showSecond(vc: UIViewController, animated: Bool = true) {
        let secondVC = SecondViewController()
        show(from: vc, to: secondVC)
    }
    // from -> to に画面遷移するメソッド
    // 前のViewControllerがNavigationControllerを使用していた場合を想定して作った
    private static func show(from: UIViewController, to: UIViewController, animated: Bool = true) {
        if let nav = from.navigationController {
            nav.pushViewController(to, animated: animated)
        }else {
            from.show(to, sender: nil)
        }
    }

그리고, 버튼을 탭하면 화면 천이하도록 구현해 갑니다.

FirstViewController.swift
    @IBAction private func showSecond(_ sender: UIButton) {
        // SecondViewControllerに画面遷移する
        Router.showSecond(vc: self)
    }

이렇게 되면 성공입니다!


결론



설정에 따라서는 화면 천이 방법도 자유롭게 변경 가능하므로 여러가지, 시도해 주세요.

그리고 내가 여러가지, 시도한 소스 코드도 여기 에 올리고 있기 때문에 좋았으면 봐 주세요.

뭔가 잘못된 부분이나 신경이 쓰이는 부분이 있으면, 부담없이 코멘트 해 주시면 기쁩니다.

좋은 웹페이지 즐겨찾기