簡體   English   中英

我無法在 SwiftUI 中使用.onAppear()、.onTapGesture() 函數和 NavigationLink 更改值

[英]I can not change the value with .onAppear(), .onTapGesture() function and with a NavigationLink in SwiftUI

我遇到了一個小問題,我無法使用 SwiftUI 中的 .onAppear()、.onTapGesture() 函數和 NavigationLink 更改值

如果有人可以告訴我如何解決它? 問候,

看一

struct ContentView: View {
    @StateObject var vm = ViewModel()
    var body: some View {
        NavigationView{
        List{
        ForEach(0..<4){ numero in
           NavigationLink(
       
            destination: DetailView().onAppear(){
//This function is not working 
                vm.takeNumber(number: numero)
            },
            label: {
                Text(String(numero))
            })
 
        }
    }
    }
    }    
}
class ViewModel: ObservableObject {
    @Published var numero:Int = 0    
    func takeNumber(number: Int) {
        numero = number
    }
}

視圖二

struct DetailView: View {
    @StateObject var vm = ViewModel()
    var body: some View {
// My number is not updated 
        Text(String("My NUMBER : \(vm.numero)"))
    }
}

@StateObject創建模型的新副本。

嘗試將其更改為

@ObservedObject var model: ViewModel

DetailView中並將其作為參數傳遞給ContentView

好讀: https ://www.hackingwithswift.com/quick-start/swiftui/whats-the-difference-between-observedobject-state-and-environmentobject

暫無
暫無

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

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