화면 전환과 관련된 코드 설명을 다른 파일로 나누어 구현합니다.
소개
지금까지 나는 Main.storyboard
에서 ViewController끼리를 화면 전이시키고있었습니다.
하지만 이번에는 1つのStoryboardに1つのViewController
Storyboard 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.swiftimport 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)
}
이렇게 되면 성공입니다!
결론
설정에 따라서는 화면 천이 방법도 자유롭게 변경 가능하므로 여러가지, 시도해 주세요.
그리고 내가 여러가지, 시도한 소스 코드도 여기 에 올리고 있기 때문에 좋았으면 봐 주세요.
뭔가 잘못된 부분이나 신경이 쓰이는 부분이 있으면, 부담없이 코멘트 해 주시면 기쁩니다.
Reference
이 문제에 관하여(화면 전환과 관련된 코드 설명을 다른 파일로 나누어 구현합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/reo0612/items/4235bdf51c3dadd256cb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이번에는 코드베이스로 화면을 표시하고 싶으므로
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.swiftimport 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)
}
이렇게 되면 성공입니다!
결론
설정에 따라서는 화면 천이 방법도 자유롭게 변경 가능하므로 여러가지, 시도해 주세요.
그리고 내가 여러가지, 시도한 소스 코드도 여기 에 올리고 있기 때문에 좋았으면 봐 주세요.
뭔가 잘못된 부분이나 신경이 쓰이는 부분이 있으면, 부담없이 코멘트 해 주시면 기쁩니다.
Reference
이 문제에 관하여(화면 전환과 관련된 코드 설명을 다른 파일로 나누어 구현합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/reo0612/items/4235bdf51c3dadd256cb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
우선 새롭게
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)
}
이렇게 되면 성공입니다!
결론
설정에 따라서는 화면 천이 방법도 자유롭게 변경 가능하므로 여러가지, 시도해 주세요.
그리고 내가 여러가지, 시도한 소스 코드도 여기 에 올리고 있기 때문에 좋았으면 봐 주세요.
뭔가 잘못된 부분이나 신경이 쓰이는 부분이 있으면, 부담없이 코멘트 해 주시면 기쁩니다.
Reference
이 문제에 관하여(화면 전환과 관련된 코드 설명을 다른 파일로 나누어 구현합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/reo0612/items/4235bdf51c3dadd256cb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
// 次の画面に遷移するためのメソッド
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)
}
}
@IBAction private func showSecond(_ sender: UIButton) {
// SecondViewControllerに画面遷移する
Router.showSecond(vc: self)
}
설정에 따라서는 화면 천이 방법도 자유롭게 변경 가능하므로 여러가지, 시도해 주세요.
그리고 내가 여러가지, 시도한 소스 코드도 여기 에 올리고 있기 때문에 좋았으면 봐 주세요.
뭔가 잘못된 부분이나 신경이 쓰이는 부분이 있으면, 부담없이 코멘트 해 주시면 기쁩니다.
Reference
이 문제에 관하여(화면 전환과 관련된 코드 설명을 다른 파일로 나누어 구현합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/reo0612/items/4235bdf51c3dadd256cb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)