选择特定视图后,如何使用生命周期方法?

io

我目前正在使用SwiftUI开发应用程序。

这个程序有2个视图控制着一个标签视图。

我想用这些方法sceneDidBecomeActive,并sceneWillEnterForegroundSceneDelegate.swift只有当选择一个特定视图。

这些方法不管选择哪个视图都有效。

我该怎么做?


SceneDelegate.swift

import SwiftUI

class SceneDelegate: UIResponder, UIWindowSceneDelegate {
    
    var window: UIWindow?

    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
       
        let contentView = ContentView()

        if let windowScene = scene as? UIWindowScene {
            let window = UIWindow(windowScene: windowScene)
            window.rootViewController = UIHostingController(rootView: contentView)
            self.window = window
            window.makeKeyAndVisible()
        }
    }
    func sceneDidDisconnect(_ scene: UIScene) {
    }
    func sceneDidBecomeActive(_ scene: UIScene) {
        // I want use this print method only when FirstView is selected
        print("selected FirstVIew")
    }
    func sceneWillResignActive(_ scene: UIScene) {
    }
    func sceneWillEnterForeground(_ scene: UIScene) {
        // I want use this print method only when FirstView is selected
        print("selected FirstVIew")
    }
    func sceneDidEnterBackground(_ scene: UIScene) {
    }
}

ContentView.swift

import SwiftUI

struct ContentView: View {
    
   var body: some View {
        TabView {
           FirstView()
                .tabItem {
                        Text("First")
            }.tag(1)
           SecondView()
                .tabItem {
                        Text("Second")
            }.tag(2)
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

FirstView.swift

import SwiftUI

struct FirstView: View {
    var body: some View {
        Text("FirstView")
    }
}

struct FirstView_Previews: PreviewProvider {
    static var previews: some View {
        FirstView()
    }
}

SecondView.swift

import SwiftUI

struct SecondView: View {
    var body: some View {
        Text("SecondView")
    }
}

struct SecondView_Previews: PreviewProvider {
    static var previews: some View {
        SecondView()
    }
}

Xcode:版本11.7

雨燕:雨燕5

Koushik迪

SceneDelegate方法处理App的生命周期,而不是视图的生命周期。因此,当选择了一个视图,你不能“跑”起来。

但是,您可以使用UserDefaults。

// When first view selected
UserDefaults.standard.set("First View", forKey: "selectedView")

// In SceneDelegate
func sceneDidBecomeActive(_ scene: UIScene) {
    if let selected = UserDefaults.standard.string(forKey: "selectedView"),    
             selected == "First View" {
        print("selected FirstVIew")
    }
}

func sceneWillEnterForeground(_ scene: UIScene) {
    if let selected = UserDefaults.standard.string(forKey: "selectedView"),          
              selected == "First View" {
        print("selected FirstVIew")
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用在 React Native 的生命周期方法中创建的变量设置视图的宽度?

来自分类Dev

使用哪种反应生命周期方法

来自分类Dev

在使用生命周期参数的函数调用中如何处理结构参数的生命周期?

来自分类Dev

接收剩余数据后,应使用哪种生命周期方法创建子组件?

来自分类Dev

@After方法的生命周期

来自分类Dev

如何检查在Doctrine事件订阅者中运行的特定生命周期事件方法?

来自分类Dev

在 React 生命周期方法中使用本地方法

来自分类Dev

如何知道活动生命周期方法已完成运行

来自分类Dev

如何取消bean的默认生命周期方法?

来自分类Dev

onRestoreInstanceState-Android视图生命周期

来自分类Dev

Wink:如何使用Spring生命周期管理?

来自分类Dev

如何使用生命周期初始化变量?

来自分类Dev

如何使用JPA和实体对象生命周期

来自分类Dev

如何在devops生命周期的开发阶段使用docker?

来自分类Dev

如何使用现有代码实现生命周期事件

来自分类Dev

注销后的CSRF令牌生命周期

来自分类Dev

生命周期方法多次运行

来自分类Dev

Servlet的生命周期及其方法

来自分类Dev

活动崩溃生命周期方法-Android

来自分类Dev

反应生命周期方法的理解

来自分类Dev

异步React组件生命周期方法

来自分类Dev

android生命周期方法不调用

来自分类Dev

活动生命周期方法规则

来自分类Dev

静态类型语言的生命周期方法

来自分类Dev

Android Activity 生命周期方法

来自分类Dev

生命周期方法 onPause 和 onStop

来自分类Dev

如何管理认知令牌生命周期

来自分类Dev

如何测试Azure存储生命周期?

来自分类Dev

如何增加绑定的生命周期

Related 相关文章

热门标签

归档