网站首页 > 开源技术 正文
摘要
刚创建一个新的项目,在 AppDelegate 中设置 rootViewController 来确定应用的首页是一个最基本的处理,因为是不常操作的处理,所以容易忽略其中的某个步骤,导致无法设置成功。所以记录下来,以备快速查找。
刚创建一个 iOS 项目,会先设置应用的 rootViewController,也就是应用的首页。一般的操作代码如下:
// UIViewController 为首页控制器
let homeNav = UINavigationController.init(rootViewController: UIViewController.init())
window?.rootViewController = homeNav
window?.makeKeyAndVisible()
这三行代码需要写在 AppDelegate 的 application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool 函数中。
当完成以上步骤之后,会发现这里没有 window 对象,那就需要在 AppDelegate 中设置 window 属性变量:
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
......
}
到这里,项目工程就没有报错,就正常运行应用,漫长的编译、初始化和启动应用的过程后,发现首页并不是自己设置的控制器。
接下来排查问题,最上面的三行代码也是执行了,就是打断点看 window 对象,window 也不是 nil。查找好久,发现还需要在做一步处理。
就是到项目工程中,选择 Info 选项,看到 Custom iOS Target Properties 列表中,删除 Application Scene Manifest 选项。
这时候,再运行工程,可以成功的跳转到自己设置的首页了。
那么,Application Scene Manifest 是什么,为什么会影响到设置首页呢?
查找开发文档,看到 UIApplicationSceneManifest 选项的解释,在详细的解释中找到了答案:若在 plist 文件中设置这个选项,那么应用就支持 scenes,并且不能在 AppDelegate 中处理页面的切换。
Discussion
The presence of this key indicates that the app supports scenes and does not use an app delegate object to manager transitions to and from the foreground or background.
新创建项目工程的时候,会发现除了 AppDelegate.swift 文件之外,还有一个 SceneDelegate.swift 文件。并且这个文件只能在 iOS 13 及以上才可以使用。现在还不是很确定这两个文件的联系和区别,在什么样的场景中使用 SceneDelegate 对象,等后面再多了解些,再去使用它。
题外话
时间仓促,说的东西可能不全面,在你查看的过程中遇到什么问题,评论区给我留言,我会尽快回复
猜你喜欢
- 2024-09-19 一篇文章带你了解Telerik UI for WPF中热门的深色主题
- 2024-09-19 【2.UI元素】6.Scrollbar and Scroll View
- 2024-09-19 Graphics View绘图架构:构建交互式和可扩展的绘图应用
- 2024-09-19 Web View 结合 MAUI Blazor:实现 Web 与 WPF 的双边互补,附带案例
- 2024-09-19 SwiftUI入门 - Toast的封装Exte、nsion与ViewModifier的使用
- 2024-09-19 揭秘Graphics View绘图架构设计方案:从基本概念到实际应用
- 2024-09-19 三星 One UI 3.1更新,Galaxy S21系列同步升级
- 2024-09-19 UIActivityViewController属性和使用?
- 2024-09-19 iOS开发——使用UICollectionView实现一个列表头部拉伸效果的案例
- 2024-09-19 android-如何在子线程中更新ui(android子线程崩溃导致进程崩溃)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)