Ios Swift情节提要应用程序在黑屏上启动 大家好,
我正在使用故事板构建一个Swift应用程序。几个月来我一直工作得很好,但突然间我的应用程序无法正常加载。每当我在模拟器或物理iPhone上打开它时,启动屏幕就会在黑屏出现之前显示出来 我的Mac电脑安装在macOS Big Sur开发者Beta 5和Xcode 12 Beta 6上,我的iPhone安装在iOS 14开发者Beta 5上。 这是突然发生的,我不记得做了什么导致它 以下是我到目前为止所尝试的…Ios Swift情节提要应用程序在黑屏上启动 大家好,,ios,swift,xcode,storyboard,uikit,Ios,Swift,Xcode,Storyboard,Uikit,我正在使用故事板构建一个Swift应用程序。几个月来我一直工作得很好,但突然间我的应用程序无法正常加载。每当我在模拟器或物理iPhone上打开它时,启动屏幕就会在黑屏出现之前显示出来 我的Mac电脑安装在macOS Big Sur开发者Beta 5和Xcode 12 Beta 6上,我的iPhone安装在iOS 14开发者Beta 5上。 这是突然发生的,我不记得做了什么导致它 以下是我到目前为止所尝试的… 重命名情节提要并将目标的“常规”选项卡更新为新名称,以及执行相同操作,但手动编辑Inf
- 重命名情节提要并将目标的“常规”选项卡更新为新名称,以及执行相同操作,但手动编辑Info.plist
- 将情节提要移入和移出“复制捆绑资源”
- 更新到最新的Xcode 12测试版(我在macOS Big-Sur上)
- 使用清除派生数据
- 启动一个全新的项目,并通过拖放移动我所有的代码和资源(有趣的观察:当我启动一个新项目时,我在默认的Main.storyboard中添加了一个简单的标签,并在我的iPhone上运行。标签没有显示。)
- 向我的AppDelegate添加一个函数,以便在启动时手动加载情节提要
- 在AppDelegate和my Home View控制器中添加各种打印语句
let storyboard=UIStoryboard(名称:“Main”,捆绑包:nil)
让initialViewController=storyboard.InstanceEviewController(带有标识符:“主”)
self.window.rootViewController=initialViewController
self.window.makeKeyAndVisible()文件
打印(“应用程序启动”)
致我的代表。现在,当我运行我的应用程序时,我得到
印刷的。我还补充说
override func viewDidLoad(){
super.viewDidLoad()
打印(“主视图已加载”)
到我的主视图控制器。
现在,当我运行我的应用程序时,我会在Xcode中打印以下内容:
2020-08-28 13:11:20.140963+0100 MY-APP[11077:1951343] libMobileGestalt MobileGestaltCache.c:166: Cache loaded with 4536 pre-cached in CacheData and 53 items in CacheExtra.
2020-08-28 13:11:20.759943+0100 MY-APP[11077:1951162] Metal API Validation Enabled
Home view loaded
App launched
不过,我的iPhone上什么都没有。启动屏幕出现了,褪成黑色,就这样。我太困惑了
如果有人知道如何解决此问题,或者我可以尝试一些方法,请告诉我。提前谢谢!在最新版本中,窗口属性在AppDelegate中不再可用。现在,它被移动到SceneDelegate.swift。您可以在func scene willConnectTo中尝试执行以下操作:
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let _ = (scene as? UIWindowScene) else { return }
if let windowScene = scene as? UIWindowScene {
self.window = UIWindow(windowScene: windowScene)
let storyBoard = UIStoryboard(name: "Main", bundle: nil)
let initialViewController = storyBoard.instantiateViewController(withIdentifier: "Home")
self.window?.rootViewController = initialViewController
self.window!.makeKeyAndVisible()
}
}
更新:同时使您的主界面下的“常规”菜单为空
此外,您还必须从项目的
Info.plist
中删除UIMainStoryboardFileMain
和UISceneStoryboardFile Main
。确保在sceneDelegate和AppDelegate中都存在类似的窗口
class AppDelegate: UIResponder, UIApplicationDelegate {
// check for this
var window: UIWindow?
// check for this
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
}
}
如果你还不想切换到场景API,你也可以在
UIApplicationSceneManifest
部分将UIApplicationSupportsMultipleScenes
设置为NO
,该部分可能最近出现在你的Info.plist中。这就是我刚才做的,它为我解决了这个问题。hmm,这没有做任何事情……不是吗应用程序仍会启动到黑屏。然后可能会出现其他问题。我们看不到您的故事板的详细信息。但是,General下的主界面是否为空?不,主界面已选择Main.storyboard。我一直在玩这个,但仍然没有运气…感谢您的帮助。您还必须删除UIMainSt来自项目Info.plist的oryboardFileMain和UISCenestryBoardFile Main。你解决了这个问题吗?@AshleyMills你们能找到解决方案吗?找到解决方案了吗?我也面临同样的问题。