navigation - 为什么我的 NavigationLink() 只工作一次,但在 List() 中工作正常?
问题描述
我尝试学习 SwiftUI,但我不明白为什么这适用于 Apple 教程,但不适用于我自己的项目。我想使用我自己的设计,这意味着它NavigationLink
看起来像一个普通的按钮。问题是这只工作一次,当我使用 < Back 按钮时,我不能再次使用“编辑”按钮。
import SwiftUI
import Foundation
struct TimeTrackerView: View {
@ObservedObject var timeTracker = TimeTracker()
@State private var isStart = false
var body: some View {
NavigationView {
ZStack {
Color.black
.edgesIgnoringSafeArea(.all)
VStack {
Spacer()
Text( timeString(time: self.timeTracker.time) )
.font(.largeTitle)
.foregroundColor(.white)
.padding(50)
Spacer()
HStack {
Group {
Button(action: {
self.isStart.toggle()
if self.isStart {
self.timeTracker.startTimer()
} else {
self.timeTracker.stopTimer()
}
}) {
if isStart {
Text("Stop")
.foregroundColor(.red)
} else {
Text("Start")
.foregroundColor(.white)
}
}
Spacer()
// BUG: Button works only once
NavigationLink(destination: TimeDetail()) {
Text("Edit")
.foregroundColor(.white)
}
}
}
.font(.title).padding(50)
}
}
.navigationBarTitle("Navigation")
}
}
}
func timeString(time: Int) -> String {
let hours = time / 3600
let minutes = time / 60 % 60
let seconds = time % 60
return String(format:"%1ih %1im %1is", hours, minutes, seconds)
}
struct TimeTrackerView_Previews: PreviewProvider {
static var previews: some View {
TimeTrackerView()
}
}
这是 TimeDetail 视图。
import SwiftUI
struct TimeDetail: View {
var body: some View {
Group {
Text("HI, i'm View")
}.navigationBarTitle("Navi", displayMode: .inline)
}
}
struct TimeDetail_Previews: PreviewProvider {
static var previews: some View {
TimeDetail()
}
}
我发现当我使用 a List
with NavigationLink
s 时它可以工作。但不是一个按钮。
解决方案
推荐阅读
- java - 在列表视图中显示数组的内容
- python-3.x - 从源代码生成选择器,用于scrapy
- c - MSP430 启动板 | 分配双击按钮
- angular - Angular Material 11.0.3 + Tailwind CSS 不起作用
- reactjs - 看课程 react native expo 和 react-native cli
- sql - 在 SQL 查询中条件不为真时跳过联合语句
- javascript - 在 React 中是否可以避免在按下浏览器后退按钮时从服务器重新加载数据(不使用 Redux)?
- azure - 由于数据工厂模式,无法使用 GIT 同步发布 Azure 数据工厂?
- javascript - 使用 console.log 打印后未定义数组元素??似乎只有在我删除该行之后才定义..?(Javascript)
- npm - 最新的 axios 的 npm 审计问题?