【问题标题】:rootViewController is black and shows no contentrootViewController 为黑色且不显示任何内容
【发布时间】:2021-08-09 04:04:09
【问题描述】:

我的第一个名为 StartViewController 的 VC 在启动时只是黑色(应该是黄色)。谁能帮帮我??

这是我的 AppDelegate:

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

  var window: UIWindow?

  func application(_ application: UIApplication,
                   didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    window = UIWindow(frame: UIScreen.main.bounds)
    window?.makeKeyAndVisible()

    //MARK: Start VC
    let navController = UINavigationController(rootViewController: StartViewController())
    navController.navigationBar.isTranslucent = false
    window?.rootViewController = navController
    window?.isOpaque = true
    return true
  }
}

这是我的 StartViewController 类:

import UIKit 
class StartViewController: UIViewController {
    @IBOutlet weak var btn: UIButton!    
    override func viewDidLoad() {
        super.viewDidLoad()
        print("HELLO WORLD")
    }
}

这就是我的故事板的样子(后来添加):

感谢您的帮助!如果您需要查看其他课程或内容,请询问! :)

【问题讨论】:

  • 这是一个新项目吗?应用程序委托 window 在 iOS 13 和 iOS 14 中没有任何用途,因此您的代码什么也不做。
  • 这是一个旧项目,但刚刚开始工作(新 iOS)。我该如何解决?谢谢!
  • 好的,在这种情况下应该没问题。如果你没有场景委托,你可以没有一个。也就是说,有些东西效果更好,尤其是如果你没有落后于 iOS 13,如果你使用带有场景委托的现代模板(然后你的代码会去那里)。

标签: ios swift xcode appdelegate


【解决方案1】:

您不能初始化像StartViewController() 这样的故事板中的视图控制器。所以这不起作用:

let navController = UINavigationController(rootViewController: StartViewController())

相反,您需要使用instantiateViewController 方法。确保还在情节提要中为您的视图控制器设置“情节提要 ID”。

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let viewController = storyboard.instantiateViewController(withIdentifier: "YourViewControllerID")
let navController = UINavigationController(rootViewController: viewController)

【讨论】:

    猜你喜欢
    • 2020-04-17
    • 1970-01-01
    • 2017-04-24
    • 1970-01-01
    • 1970-01-01
    • 2020-12-10
    • 1970-01-01
    • 1970-01-01
    • 2012-09-29
    相关资源
    最近更新 更多