ios 无法更新SwiftUI中的@State变量

qzwqbdag  于 11个月前  发布在  iOS
关注(0)|答案(1)|浏览(178)

我有一个变量名为索引,装饰 @State ,我想更新值时,点击设置工具栏按钮。
工具栏按钮的块被执行,但index的值仍然是-1。
我调试并检查了currentIndex的值,它仍然是-1。

import SwiftUI
import SwiftData

struct HomeView: View {
    
    @State var isPresentingAddView = false
    @State var index = -1

    var body: some View {
        NavigationStack() {
            VStack(alignment: .leading) {
                Spacer()
            }
            .navigationTitle(Text("title"))
            .navigationBarTitleDisplayMode(.inline)
            .toolbar {
                ToolbarItem(placement: .topBarTrailing) {
                    Button {
                        index = 1
                        isPresentingAddView = true
                    } label: {
                        Label("setting", systemImage: "plus")
                    }
                }
            }
        }
        .sheet(isPresented: $isPresentingAddView) {
            let currentIndex = index
        }
    }
}

字符串
工具栏按钮块代码在工作表块代码之前执行

fhity93d

fhity93d1#

你还没有在任何地方读取body中的index,所以依赖关系还没有建立,通常你最终会添加代码来读取它,但与此同时你可以这样做:

NavigationStack { [index] in

字符串
首选的方法是使用不同的工作表修改器,使用自定义值而不是bool,那么你根本不需要bool,例如。

@State var index: Int?
...
 .sheet(item: $index) { value in
            let currentIndex = value
        }


另一个例子是在文档中:https://developer.apple.com/documentation/swiftui/view/sheet(item:ondismiss:content:)

相关问题