我有一个在Mac环境下使用SwiftUI编写的
每当我按下导航项时,右侧会显示导航详细信息。然而,我为我的活动导航项自定义了样式。当我按下一个项目时,我想调用一个操作。 我尝试将
这是我的代码:
NavigationView
,其中包含许多NavigationLinks
。每当我按下导航项时,右侧会显示导航详细信息。然而,我为我的活动导航项自定义了样式。当我按下一个项目时,我想调用一个操作。 我尝试将
onTapGesture()
函数应用于NavigationLink
,但是它并没有按照预期工作/正确工作。这是我的代码:
NavigationView {
VStack{
NavigationLink(destination: SecondContentView()) {
VStack
{
Image("Calendar")
.resizable().frame(width:40, height: 40)
.colorMultiply(currentSelected == 0 ? Color(red: 57 / 255, green: 214 / 255, blue: 155 / 255) : Color(red: 255 / 255, green: 255 / 255, blue: 255 / 255))
Text("Dates")
.foregroundColor(currentSelected == 0 ? Color(red: 57 / 255, green: 214 / 255, blue: 155 / 255) : Color(red: 255 / 255, green: 255 / 255, blue: 255 / 255))
}
}
.buttonStyle(PlainButtonStyle())
.padding(18)
.background(currentSelected == 0 ? Color(.controlBackgroundColor) : Color(.clear))
.zIndex(50)
.onTapGesture {
NSLog("Tapped Nav")
self.currentSelected = 0
}
有时会输出日志"Tapped Nav"
。我认为导航项内的图像和文本存在问题。是否有更好的方法,在单击该项时调用操作函数?
onAppear
的一个问题是当选择链接时它并不总是被调用。这取决于你是否使用NavigationView
,或者新的NavigationStack
或NavigationSplitView
,因为 SwiftUI 有一些后台行为。 - bio