如何在ViewController里调用app delegate里自己写的的方法或者系统的方法

   [(AppDelegate*)[UIApplication sharedApplication].delegate loadViewController];


### 关于 `SceneDelegate` 的应用场景和用法 #### 应用场景 随着 iOS 13 及更高版本的发布,Apple 引入了 `SceneDelegate` 来处理应用程序的不同场景。这使得开发者可以更好地管理和响应多个窗口或视图控制器的行为[^1]。 对于采用 Storyboards 或 SwiftUI 构建的应用程序而言,`SceneDelegate` 能够帮助实现更加灵活的界面布局和支持 iPad 上的多窗口特性[^3]。尤其在 SwiftUI 中,尽管默认情况下不再依赖传统的 `AppDelegate` 和 `SceneDelegate` 文件,但在某些特定需求下仍然可以通过适配器重新引入这些组件的功能[^2]。 #### 使用方法 当创建一个新的 iOS 项目时,默认会自动生成 `SceneDelegate.swift` 文件,并配置好基本结构用于接收并处理来自系统的场景相关通知。以下是具体操作: - **初始化设置** 在 `SceneDelegate.swift` 中定义了一个名为 `scene(_:willConnectTo:options:)` 的函数,该函数会在每次有新的场景连接到应用时被调用。此时可以根据传入参数决定要显示哪个初始视图控制器。 ```swift func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { guard let windowScene = (scene as? UIWindowScene) else { return } let window = UIWindow(windowScene: windowScene) window.rootViewController = ViewController() // 替换成实际的根VC self.window = window window.makeKeyAndVisible() } ``` - **状态恢复** 如果希望保存用户的交互历史以便下次打开应用时能够继续之前的体验,则可以在 `stateRestorationActivity(for:)` 方法内指定相应的活动对象。 ```swift func stateRestorationActivity(for scene: UIScene) -> NSUserActivity? { let activity = NSUserActivity(activityType: "com.example.myapp.activitytype") activity.title = "My App Activity" return activity } ``` - **集成至 SwiftUI** 对于完全基于 SwiftUI 开发的应用来说,如果想要利用 `SceneDelegate` 提供的能力,比如监听后台切换事件等,那么就需要借助 `UIApplicationDelegateAdaptor` 属性包装器将传统 UIKit 风格的委托机制桥接到现代框架之中。 ```swift @main struct MyApp: App { @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate var body: some Scene { WindowGroup { ContentView() } } } class AppDelegate: NSObject, UIApplicationDelegate { func applicationDidEnterBackground(_ application: UIApplication) { print("Application entered background.") } func applicationWillEnterForeground(_ application: UIApplication) { print("Application will enter foreground.") } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值