小编Bob*_*Bob的帖子

如何从导航堆栈中弹出多个视图?

寻找有关在 SwiftUI 中从导航堆栈中弹出多个视图的简单方法的一些指导。我有 4 个使用 NavigationLink 链接在一起的视图。在最后一个视图中,我想跳回初始 ContentView,从堆栈中弹出所有其他视图。我不想使用每个视图的 NavigationBar 上的“返回”按钮来实现这一点。
提前致谢。鲍勃。'''

import SwiftUI

struct ContentView: View {
    var body: some View {
        NavigationView {
            VStack {
                NavigationLink(destination: BView()) {
                    Text("This is View A, now go to View B.")
                }
            }
        }
    }
}
struct BView: View {
    var body: some View {
        NavigationLink(destination: CView()) {
                Text("This is View B, now go to View C.")
        }
    }
}

struct CView: View {
    var body: some View {
        NavigationLink(destination: DView()) {
                Text("This …
Run Code Online (Sandbox Code Playgroud)

react-navigation-stack swiftui

7
推荐指数
1
解决办法
1514
查看次数

如何使用 NavigationLink 编辑列表中的项目?

我正在寻找有关 SwiftUI 的一些指导。

我有一个视图显示一个简单的列表,每行显示一个“名称”字符串。您可以通过单击尾随导航栏按钮将项目添加到数组/列表。这工作正常。我现在想使用 NavigationLink 来呈现一个新的“DetailView”,我可以在其中编辑行的“name”字符串。我正在努力解决如何在 detailview 中使用绑定来更新名称。

我在网上找到了很多关于如何在新视图中呈现数据的教程,但没有关于如何编辑数据的教程。提前致谢。

内容视图:

struct ListItem: Identifiable {
    let id = UUID()
    let name: String
}

class MyListClass: ObservableObject {
    @Published var items = [ListItem]()
}

struct ContentView: View {

    @ObservedObject var myList = MyListClass()

    var body: some View {
        NavigationView {
            List {
                ForEach(myList.items) { item in
                    NavigationLink(destination: DetailView(item: item)) {
                        Text(item.name)
                    }
                }
            }
            .navigationBarItems(trailing:
                Button(action: {
                    let item = ListItem(name: "Test")
                    self.myList.items.append(item)
                }) {
                    Image(systemName: "plus")
                }
            )
        }
    }
} …
Run Code Online (Sandbox Code Playgroud)

list swiftui navigationlink

3
推荐指数
1
解决办法
1343
查看次数

ScrollViewReader,如何读取当前行?

我正在寻找一种简洁的方法来识别 ScrollView 中当前可见的顶行。我希望 NavigationTitle 显示当前行号。有没有办法用 ScrollViewReader 来做到这一点,或者我必须用 GeometryReader 做些什么?在下面的代码中,我希望 myRowNumber 在用户上下滚动时更新。提前致谢。

struct ContentView: View {
    
    let myArray: [Int] = [Int](1...100)
    @State private var myRowNumber: Int = 50
    
    var body: some View {
        NavigationView {
            ScrollView {
                LazyVStack{
                    ScrollViewReader { proxy in
                        ForEach(myArray, id: \.self) { index in
                            Text("Row \(index)").id(index).font(.title)
                        }
                        .onAppear {
                            proxy.scrollTo(50, anchor: .top)
                        }
                    }
                }
            }
            .navigationTitle("Current row = \(myRowNumber)")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

scrollview swiftui scrollviewreader

3
推荐指数
1
解决办法
1752
查看次数