[英]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.