如何将数据从模态视图列表传递到 SwiftUI 中的父视图?
How to pass data from a modal view list to parent view in SwiftUI?
我(可能)有一个与 SwiftUI 状态管理相关的简单问题。
A 有一个带有简单按钮列表的模态视图:
struct ExerciseList: View {
var body: some View {
List {
ForEach(1..<30) { _ in
Button("yoga") {
}
}
}
}
}
父视图是这个:
struct SelectExerciseView: View {
@State private var showingSheet = false
@State private var exercise = "select exercise"
var body: some View {
Button(exercise) {
showingSheet.toggle()
}
.sheet(isPresented: $showingSheet){
ExerciseList()
}
}
}
如何将选定的按钮文本从列表传递到父视图?
我在想我需要在模态中使用一个 Binding 变量并使用它,但不确定在这个例子中如何使用它。
在最基本的情况下,您需要在父视图 (SelectExerciseView
) 中选择练习作为状态变量。然后,您通过绑定将其传递给子视图(模态)。假设 exercise
作为字符串包含您要更改的变量:
.sheet(isPresented: $showingSheet) {
ExerciseList(exercise: $exercise)
}
然后您的模态框需要有一个 @Binding
引用。
struct ExerciseList: View {
@Binding var exercise: Exercise
var body: some View {
List {
ForEach(1..<30) { _ in
Button("yoga") {
exercise = "yoga"
}
}
}
}
}
我不确定你在问什么...
您是否尝试从模态显示“详细信息视图”。
意味着父视图 -> 模态视图 -> 详细视图
在你的情况下,它将是 SelectExerciseView -> ExerciseListView -> DetailView显示在上一个视图中按下的按钮的文本(可以是您想要的任何视图)
如果这就是您想要做的,我会使用 NavigationLink 而不是模式上的按钮。 NavigationLink 的目的地将是详细视图
我(可能)有一个与 SwiftUI 状态管理相关的简单问题。
A 有一个带有简单按钮列表的模态视图:
struct ExerciseList: View {
var body: some View {
List {
ForEach(1..<30) { _ in
Button("yoga") {
}
}
}
}
}
父视图是这个:
struct SelectExerciseView: View {
@State private var showingSheet = false
@State private var exercise = "select exercise"
var body: some View {
Button(exercise) {
showingSheet.toggle()
}
.sheet(isPresented: $showingSheet){
ExerciseList()
}
}
}
如何将选定的按钮文本从列表传递到父视图?
我在想我需要在模态中使用一个 Binding 变量并使用它,但不确定在这个例子中如何使用它。
在最基本的情况下,您需要在父视图 (SelectExerciseView
) 中选择练习作为状态变量。然后,您通过绑定将其传递给子视图(模态)。假设 exercise
作为字符串包含您要更改的变量:
.sheet(isPresented: $showingSheet) {
ExerciseList(exercise: $exercise)
}
然后您的模态框需要有一个 @Binding
引用。
struct ExerciseList: View {
@Binding var exercise: Exercise
var body: some View {
List {
ForEach(1..<30) { _ in
Button("yoga") {
exercise = "yoga"
}
}
}
}
}
我不确定你在问什么...
您是否尝试从模态显示“详细信息视图”。
意味着父视图 -> 模态视图 -> 详细视图
在你的情况下,它将是 SelectExerciseView -> ExerciseListView -> DetailView显示在上一个视图中按下的按钮的文本(可以是您想要的任何视图)
如果这就是您想要做的,我会使用 NavigationLink 而不是模式上的按钮。 NavigationLink 的目的地将是详细视图