簡體   English   中英

SwiftUI、iOS:如何從自定義內部視圖訪問 @main 結構內的 public function?

[英]SwiftUI, iOS: How to access public function inside @main struct from custom internal View?

如何從 CustomInternalView() 訪問 @main 結構內的 achieveTo()?

@main
struct MyApp: App {
    
    var body: some Scene {
        WindowGroup {
            CustomInternalView()
        }
    }

    public func achieveTo() {
        // Do stuff
    }
}


struct CustomInternalView: View {
    var body: some View {
         Text("Some")
    }
    .onDisappear {
        // How to call "achieveTo" from here????????????
    }
}

在 UIKit 就好像UIApplication.shared.windows.first..rootViewController as! YourViewController UIApplication.shared.windows.first..rootViewController as! YourViewController , SwiftUI 怎么樣?

您可以添加閉包:

@main
struct MyApp: App {
    
    var body: some Scene {
        WindowGroup {
            CustomInternalView {
                achieveTo() /// 2. Assign closure
            }
        }
    }

    public func achieveTo() {
        // Do stuff
    }
}
struct CustomInternalView: View {
    var callParentTask: (() -> Void) /// 1. Define closure
    
    var body: some View {
         Text("Some")
            .onDisappear(perform: callParentTask) /// 3. Call closure
    }
}

注意:您的onDisappear必須附加到var body: some View {內部的視圖,而不是外部。

@aheze回答的另一個更簡單的版本:

import SwiftUI

@main
struct MyApp: App {
    var body: some Scene {
        
        WindowGroup {
            
            CustomInternalView()
                .onDisappear() { achieveTo() }

        }
    }
}

func achieveTo() {
    // Do stuff
}

struct CustomInternalView: View {

    var body: some View {
         Text("Some")
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM