質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

825閲覧

storyboardを使わずに書いたプロジェクトがビルドできない

oeiqgfodgfhps

総合スコア35

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2020/07/05 11:04

swiftでコードのみのUIを実装したのですが、ビルドの際に画面が真っ黒になってしまいます。
こちらの質問を参考にinfoのMainを消したり、Main Interfaceの項目も空欄にしましたが、ビルドしても画面が真っ黒になってしまいます。
どのように解決すればよろしいでしょうか?下のコードがAppDelegateとSceneDelegateのコードです。

swift

1import UIKit 2 3@UIApplicationMain 4class AppDelegate: UIResponder, UIApplicationDelegate { 5 6 var window:UIWindow? 7 8 9 10 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 11 12 window = UIWindow(frame: UIScreen.main.bounds) 13 window?.backgroundColor = .white 14 window?.rootViewController = UINavigationController(rootViewController: TaskListViewController()) 15 window?.makeKeyAndVisible() 16 17 18 return true 19 } 20 21 // MARK: UISceneSession Lifecycle 22 @available(iOS 13.0, *) 23 func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { 24 // Called when a new scene session is being created. 25 // Use this method to select a configuration to create the new scene with. 26 return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) 27 } 28 @available(iOS 13.0, *) 29 func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) { 30 // Called when the user discards a scene session. 31 // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. 32 // Use this method to release any resources that were specific to the discarded scenes, as they will not return. 33 } 34 35 36} 37

swift

1import UIKit 2 3class SceneDelegate: UIResponder, UIWindowSceneDelegate { 4 5 var window: UIWindow? 6 7 8 func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { 9 // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. 10 // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. 11 // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). 12 guard let _ = (scene as? UIWindowScene) else { return } 13 window = UIWindow(frame: UIScreen.main.bounds) 14 window?.backgroundColor = .white 15 window?.rootViewController = UINavigationController(rootViewController: TaskListViewController()) 16 window?.makeKeyAndVisible() 17 18 } 19 20 @available(iOS 13.0, *) 21 22 func sceneDidDisconnect(_ scene: UIScene) { 23 // Called as the scene is being released by the system. 24 // This occurs shortly after the scene enters the background, or when its session is discarded. 25 // Release any resources associated with this scene that can be re-created the next time the scene connects. 26 // The scene may re-connect later, as its session was not neccessarily discarded (see `application:didDiscardSceneSessions` instead). 27 } 28 @available(iOS 13.0, *) 29 func sceneDidBecomeActive(_ scene: UIScene) { 30 // Called when the scene has moved from an inactive state to an active state. 31 // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. 32 } 33 @available(iOS 13.0, *) 34 func sceneWillResignActive(_ scene: UIScene) { 35 // Called when the scene will move from an active state to an inactive state. 36 // This may occur due to temporary interruptions (ex. an incoming phone call). 37 } 38 @available(iOS 13.0, *) 39 func sceneWillEnterForeground(_ scene: UIScene) { 40 // Called as the scene transitions from the background to the foreground. 41 // Use this method to undo the changes made on entering the background. 42 } 43 @available(iOS 13.0, *) 44 func sceneDidEnterBackground(_ scene: UIScene) { 45 // Called as the scene transitions from the foreground to the background. 46 // Use this method to save data, release shared resources, and store enough scene-specific state information 47 // to restore the scene back to its current state. 48 } 49 50 51}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hayabusabusash

2020/07/06 07:37

開発のターゲットにしている iOS のバージョンを教えていただけませんか?
hayabusabusash

2020/07/07 03:54

ありがとうございます????‍♂️ iOS 13 以降ではデフォルトで SceneDelegate のイベントが採用されるので AppDelegate でルートの ViewController を設定する必要はありません。 AppDelegate で rootViewController を設定している箇所を消してからもう一度試してみていただけませんか?
oeiqgfodgfhps

2020/07/07 05:26

ありがとうございます。 AppDelegateの該当箇所を消しましたが依然動作は変わらず、画面が真っ暗になって表示されます。
guest

回答1

0

ベストアンサー

コードもあって長くなりそうなので回答に書かせていただきます。

UIWindow の生成の仕方が少し違う気がしたので、以下のようにして試してもらえませんか?

Swift

1func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { 2 // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. 3 // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. 4 // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). 5 guard let windowScene = (scene as? UIWindowScene) else { return } 6 let window = UIWindow(windowScene: windowScene) 7 self.window = window 8 window.rootViewController = UINavigationController(rootViewController: TaskListViewController()) 9 window.makeKeyAndVisible() 10 }

投稿2020/07/07 05:59

hayabusabusash

総合スコア767

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

oeiqgfodgfhps

2020/07/07 10:46

上手くできました!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問