Storyboradを使わずに画面を作成する方法(Xcode)
はじめに
storyboardを使わずにviewcontrollerで画面を表示する方法をまとめました。
Main.stroyboardを削除して下記のようなエラーが出る場合の対処法です。
エラー内容:"Thread 1: Exception: "Could not find a storyboard named 'Main' in bundle NSBundle"
環境
Xcode11
1. 新規Projectを作成
2.Main.storyboard.swift/SceneDelegate.swiftを削除
プロジェクトを作成すると下記のような構成になっています。
その中のMain.storyboardとSceneDelegate.swiftを削除します。
3. Info.plistの設定
Info.plistを開きます。
"Application Scene Mainfest"と"Main storyboard file base name"を削除します。
(Storuboard NameのMainとMain storyboard file base nameのMainを空白にしてもできますが、今回は丸ごと削除します。)
4. AppDelegate.swift
デフォルトでは下記のようなコードになっています。
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
return true
}
// MARK: UISceneSession Lifecycle
func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
// Called when a new scene session is being created.
// Use this method to select a configuration to create the new scene with.
return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
}
func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
// Called when the user discards a scene session.
// If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
// Use this method to release any resources that were specific to the discarded scenes, as they will not return.
}
}
// MARK: UISceneSession Lifecycle 以下を削除して、下記のように変更します。
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
window = UIWindow(frame: UIScreen.main.bounds)
window?.rootViewController = ViewController()
window?.makeKeyAndVisible()
return true
}
}
5. ViewControllerの実装
ViewControllerで画面が表示できたことを確認するために、ViewControllerを実装します。
(背景色を緑色、「設定完了!!」を表示)
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
view.backgroundColor = UIColor.green // 背景をGreenに変更
let titleLabel = UILabel() // ラベルの生成
titleLabel.frame = CGRect(x: 0, y: 120, width: UIScreen.main.bounds.size.width, height: 44) // 位置とサイズの指定
titleLabel.textAlignment = NSTextAlignment.center // 横揃えの設定
titleLabel.text = "設定完了!!" // テキストの設定
titleLabel.textColor = UIColor.black // テキストカラーの設定
titleLabel.font = UIFont(name: "HiraKakuProN-W6", size: 25) // フォントの設定
self.view.addSubview(titleLabel) // ラベルの追加
}
}
6. Build
おわりに
他にもStoryboardを使わない設定が書かれた記事がありますが、所々異なる部分があり苦労したので、備忘録としてここに残します。
Author And Source
この問題について(Storyboradを使わずに画面を作成する方法(Xcode)), 我々は、より多くの情報をここで見つけました https://qiita.com/shungo_m/items/02c290b3324cc4e6096d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .