我正在升级应用程序以使用UIScene
iOS 13中定义的新模式,但是该应用程序的关键部分已停止工作。我一直在使用a
UIWindow
来覆盖屏幕上的当前内容并向用户显示新信息,但是在我正在使用的当前Beta(iOS + XCode beta
3)中,该窗口会出现,但随后会立即消失。
这是我正在使用的代码,现在无法使用:
let window = UIWindow(frame: UIScreen.main.bounds)
let viewController = UIViewController()
viewController.view.backgroundColor = .clear
window.rootViewController = viewController
window.windowLevel = UIWindow.Level.statusBar + 1
window.makeKeyAndVisible()
viewController.present(self, animated: true, completion: nil)
我已经尝试了很多方法,包括使用WindowScenes
来展示新的东西UIWindow
,但是却找不到任何实际的文档或示例。
我的尝试之一(没有用-窗口出现并立即消失的相同行为)
let windowScene = UIApplication.shared.connectedScenes.first
if let windowScene = windowScene as? UIWindowScene {
let window = UIWindow(windowScene: windowScene)
let viewController = UIViewController()
viewController.view.backgroundColor = .clear
window.rootViewController = viewController
window.windowLevel = UIWindow.Level.statusBar + 1
window.makeKeyAndVisible()
viewController.present(self, animated: true, completion: nil)
}
在iOS 13 Beta中,有人能做到这一点吗?
谢谢
编辑
在问这个问题与发布iOS 13最终版本之间已经过去了一段时间。下面有很多答案,但是几乎所有答案都包含一件事- 向UIWindow添加更强/更强的引用
。您可能需要包括一些与新场景有关的代码,但是请尝试先添加强引用。
在升级适用于iOS
13场景模式的代码时,我遇到了同样的问题。使用第二部分代码的一部分,我设法修复了所有内容,因此我的窗口再次出现。除了最后一行,我和你一样。尝试删除viewController.present(...)
。这是我的代码:
let windowScene = UIApplication.shared
.connectedScenes
.filter { $0.activationState == .foregroundActive }
.first
if let windowScene = windowScene as? UIWindowScene {
popupWindow = UIWindow(windowScene: windowScene)
}
然后,我像您一样介绍它:
popupWindow?.frame = UIScreen.main.bounds
popupWindow?.backgroundColor = .clear
popupWindow?.windowLevel = UIWindow.Level.statusBar + 1
popupWindow?.rootViewController = self as? UIViewController
popupWindow?.makeKeyAndVisible()
无论如何,我个人认为问题出在哪里viewController.present(...)
,因为您显示带有该控制器的窗口并立即显示一些“自我”,所以这取决于“自我”的真正含义。
还值得一提的是,我存储了对从控制器内部移动的窗口的引用。如果这仍然对您没用,我只能显示使用此代码的小型仓库。看看里面AnyPopupController.swift
和Popup.swift
文件。
希望有帮助,@ SirOz
我试图在TableView中插入一些值,但它不显示列中的文本,尽管这些列不是空的,因为有三行(与我在TableView中插入的条目数量相同)可单击。 我有一个类“ClientIController”,它是fxml文件的控制器,这些是TableView和TableView的列的声明。 我在initialize()方法中调用了一个名为loadTable()的函数,该函数将内容添加到TableView中
我将greeting.html文件放在src/main/webapp/web-inf/templates和src/main/resources/templates中,我试图在application.properties中指定 我尝试了这些StackOverflow中提出的解决方案:“Spring Boot不提供静态内容”和“Spring Boot不启动静态web内容”,但没有任何改变... 最后是
我在运行webpack dev服务器时遇到以下问题:当我运行npm start时,它显示以下内容: ➜ 目录git:(暂存)✗ npm启动 目录 @1.0.0 启动目录 BUILD_DEV=1 BUILD_STAGING=1 ./node_modules/webpack-dev-server/bin/webpack-dev-server.js http://localhost:8080/ webp
问题内容: 如何在同一页面中显示XML和其他类型的数据? 上面的XML应该按格式显示。另外,我想在页面中显示HTML表和其他内容。如何实现呢? 我确实在STRING中通过文件获取了XML。 我不想解析它 我要显示(就是这样) 如果您谈到XSLT(请举个例子) 我正在考虑使用Jquery插件(有任何示例吗?) 问题答案: 一种简单的解决方案是将其嵌入元素内,这样既可以保留格式,也可以保留尖括号。我还
我正在用angularJs和highChartsJS做一个统计图。 这里是代码angularJS: Html代码: 测试代码后,我遇到了一个问题: 未捕获错误:Highcharts错误#14:www.Highcharts。com/errors/14 at对象。a、 错误(http://code.highcharts.com/highcharts.js:10:49)在k.setData(http:/
我使用fiddler监控一个简单的html内容从一个PHP文件运行在localhost。但是每当我按f5刷新页面(浏览器)时,在fiddler中有时整个web会话的字体变成蓝色,即当它实际显示内容(html)时,相反的情况发生在web会话是灰色的时候,它不显示html内容。 注意:始终显示请求/响应标题,这仅用于内容。我还尝试了点技巧(“:80”)并从localhost切换到127.0。0.1.