我在这里读了很多有关SwiftUI导航的内容,并尝试了一些方法,但没有一项能按预期工作。
基本上,我有一个包含锻炼列表的视图,你可以通过点击行来显示单个锻炼。使用NavigationView和NavigationLink一起可以按预期工作。
现在,我想在详细视图上放一个按钮来开始锻炼。这应该打开一个带有计时器的视图。该视图应该用与详细视图相同的动画呈现,并在导航栏中显示锻炼的名称和返回按钮。
我可以在详细信息页面上使用NavigationLink视图实现此目的,但链接始终显示为具有右侧箭头的全宽度行。我希望它变成一个按钮,但NavigationLink似乎抵制样式。
struct WorkoutDetail: View {
var workout: Workout
var body: some View {
VStack {
NavigationLink(destination: TimerView()) {
Text("Starten")
}.navigationBarTitle(Text(workout.title))
}
}
}
struct WorkoutList: View {
var workoutCollection: WorkoutCollection
var body: some View {
NavigationView {
List(workoutCollection.workouts) { workout in
NavigationLink(destination: WorkoutDetail(workout: workout)) {
WorkoutRow(workout: workout)
}
}.navigationBarTitle(Text("Workouts"))
}
}
}
更新:这里是一个截图,用于说明我的意思:
![当前布局:使用默认右箭头的'Starten'。期望的布局:蓝色按钮,黄色背景。](https://istack.dev59.com/K6akL.webp)
workout
是如何被填充的?是否有一个模型(通常是某种形式的@ObjectBinding
)在背后支持?换句话说,你是如何获取应用程序的workout
状态的? - user7014451