gpt4 book ai didi

swiftui - 在没有导航链接的情况下更改 View SwiftUI

转载 作者:行者123 更新时间:2023-12-05 01:34:04 25 4
gpt4 key购买 nike

我大家!我花了几个小时寻找我认为非常简单的东西,但我无法找到最好的方法......我有我的 body 观:

var body: some View {

VStack {
// The CircularMenu
CircularMenu(menuItems: homeMenuItems, menuRadius: 55, menuButtonSize: 55, menuButtonColor: .black, buttonClickCompletion: buttonClickHandler(_:))
.buttonStyle(PlainButtonStyle())

}
}

其中包含一个圆形菜单。每次点击菜单项调用:

func buttonClickHandler(_ index: Int) {
/// Your actions here

switch index {
//Thermometer
case 0:
print("0")
//Light
case 1:
print("1")
//Video
case 2:
print("2")
//Alarm
case 3:
print("3")
//Car
case 4:
self.destinationViewType = .car
self.nextView(destination: .car)

default:
print("not found")
}
}

我想执行一个简单的 View 转换到另一个名为 Car 的 View 。 nextView 函数如下所示:

func nextView(destination: DestinationViewType) {

switch destination {
case .car: Car()
}
}

我认为这很简单,但我得到:Result of 'Car' initializer is unused 在 case 行。那么有人知道如何实现吗?非常感谢!

最佳答案

这是一种方法:

创建一个名为 IdentifiableViewstruct,它包含一个 AnyView 和一个 id:

struct IdentifiableView: Identifiable {
let view: AnyView
let id = UUID()
}

创建一个 @State 变量来保存 nextView。使用 .fullScreenCover(item:) 显示 nextView

@State private var nextView: IdentifiableView? = nil

var body: some View {

VStack {
// The CircularMenu
CircularMenu(menuItems: homeMenuItems, menuRadius: 55, menuButtonSize: 55, menuButtonColor: .black, buttonClickCompletion: buttonClickHandler(_:))
.buttonStyle(PlainButtonStyle())

}.fullScreenCover(item: self.$nextView, onDismiss: { nextView = nil}) { view in
view.view
}
}

然后,将self.nextView赋值给IdentifiableView:

case .car: self.nextView = IdentifiableView(view: AnyView(Car()))

当返回到 MenuView 时,使用 self.presentationMode.wrappedValue.dismiss() 关闭 View 。下面是一个最小的 Car View 示例:

struct Car: View {
@Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>

var body: some View {
Text("Car View").onTapGesture {
self.presentationMode.wrappedValue.dismiss()
}
}
}

关于swiftui - 在没有导航链接的情况下更改 View SwiftUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64088346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com