我每个人!我花了几个小时寻找一些我认为非常简单的东西,但是我却找不到最佳的方法... 我有自己的身体看法:
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")
}
}
我想执行一个简单的视图转换到另一个称为Car的视图的操作。 nextView
函数如下所示:
func nextView(destination: DestinationViewType) {
switch destination {
case .car: Car()
}
}
我认为这很简单,但在案例行中却得到了Result of 'Car' initializer is unused
。
那么有人知道如何实现这一目标吗?提前非常感谢!
答案 0 :(得分:1)
如果要用新视图完全替换正文内容,则需要一些条件。假设您有一个os.system('python faceDetect.py')
和一个Container
,如果创建了一个body
视图,我们将显示它:
Car
然后我们只需要在点击时分配汽车视图的新创建实例:
struct Container: View {
@State var car: Car? // Storage for optional Car view
var body: some View {
if let car = car { // if the car view exists
car // returning the car view
} else { // otherwise returning the circular menu
VStack {
CircularMenu(menuItems: homeMenuItems, menuRadius: 55, menuButtonSize: 55, menuButtonColor: .black, buttonClickCompletion: buttonClickHandler(_:))
.buttonStyle(PlainButtonStyle())
}
}
}
...
我看到您提到...
func buttonClickHandler(_ index: Int) {
switch index {
....
//Car
case 4:
car = Car() // assigning the newly created instance
...
}
}
}
和其他一些情况。因此,您的代码将比这稍微复杂一些,但是想法保持不变。我们存储一个视图或一些信息,这些信息可以帮助我们在必要时创建视图,然后根据条件返回选择器或视图。
答案 1 :(得分:1)
这里是一种方法:
创建一个名为struct
的{{1}},其中包含一个IdentifiableView
和一个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()
视图的示例:
Car