aji*_*ark 6 swiftui swiftui-navigationlink
我有两个用 swiftUI 编写的视图,例如 ViewA 和 ViewB。ViewA 的 nonAppear() 有一个 apiCall,它在最初加载视图时调用。\n我使用导航链接从 ViewA 导航到 ViewB 并单击 ViewB 中的后退按钮ViewA 的 onAppear() 被调用。
\n\xe2\x80\xa2 从视图导航回来时有什么方法可以停止调用 onAppear()
\n\xe2\x80\xa2 我正在 swiftUI 中寻找 UIKit 中类似“ViewDidLoad”的东西\n给定我的代码示例
\nstruct ContentView: View {\n var body: some View {\n NavigationView{\n List(viewModel.list){ item in\n NavigationLink(\n destination: Text("Destination"),\n label: {\n Text(item.name)\n })\n }\n .onAppear{\n viewModel.getListApiCall()\n }\n \n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n
ObservableObject@Published属性发生变化时,就意味着模型发生了变化@ObservedObject/@EnvironmentObject SwiftUI 将观察模型并确保视图状态与对模型所做的任何更改同步class Model: ObservableObject {
@Published var list = [Item]()
init() {
fetchItems()
}
private func fetchItems() {
//To simulate some Async API call
DispatchQueue.main.asyncAfter(deadline: .now() + 2) { [weak self] in
self?.list = (1...10).map { Item(name: "name \($0)") }
}
}
}
struct Item: Identifiable {
var name: String
var id : String {
name
}
}
Run Code Online (Sandbox Code Playgroud)
import SwiftUI
struct ContentView: View {
@ObservedObject var model: Model
var body: some View {
NavigationView{
List(model.list){ item in
NavigationLink(destination: Text("Destination")) {
Text(item.name)
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4919 次 |
| 最近记录: |