Xcode 11ベータの問題に直面しています。
問題は、デフォルトのwindow
変数がAppDelegate
ファイルで宣言されていないことです。
誰かがこれと同じ問題に直面していますか?
デフォルトの変数ウィンドウ:UIWindow?これで、SceneDelegate.Swiftで移動されます。 Xcode 11でrootViewControllerを設定するには、SceneDelegate.Swiftファイル内で作業できます。シーンデリゲートで、ウィンドウインスタンスとルートビューコントローラを次のように作成する必要があります。
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
// set or create your viewController here
let yourViewController = UIStoryboard.init(name: "Main", bundle: nil).instantiateViewController(identifier: "yourViewController") as! YourViewController
// set the rootViewController here using window instance
self.window?.rootViewController = yourViewController
}
また、この回答は役に立ちます: ルートビューコントローラーを手動でセットアップすると黒い画面が表示されるのはなぜですか?
それがあなたを助けることを願っています!
私の場合、それで十分です。
var window: UIWindow? // add this by yourself
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
window = UIWindow(frame: Device.bounds)
let root = DDTabBarController()
window?.rootViewController = root
window?.makeKeyAndVisible()
return true
}
私のアプローチ:
最初に、AppDelegateで、次のように、アクセスするView Controllerのクラスを使用して静的プロパティを作成します
class AppDelegate: UIResponder, UIApplicationDelegate {
// MARK: Home
static var homeViewController: HomeViewController?
...
}
次に、ビューコントローラで
// MARK: - Managing the view
override func viewDidLoad() {
super.viewDidLoad()
// Singleton
AppDelegate.homeViewController = self
...
}
使い方:
extension UIViewController {
var homeViewController: HomeViewController? {
if let controller = self as? HomeViewController {
return controller
}
return AppDelegate.homeViewController
}
}