Sil*_*ing 3 segue swiftui swiftui-navigationlink
我大家!我花了几个小时寻找一些我认为非常简单的东西,但我无法找到最好的方法......我有我的身体视图:
var body: some View {
VStack {
// The CircularMenu
CircularMenu(menuItems: homeMenuItems, menuRadius: 55, menuButtonSize: 55, menuButtonColor: .black, buttonClickCompletion: buttonClickHandler(_:))
.buttonStyle(PlainButtonStyle())
}
}
Run Code Online (Sandbox Code Playgroud)
其中包含一个圆形菜单。每次单击菜单项都会调用:
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")
}
}
Run Code Online (Sandbox Code Playgroud)
我想执行一个简单的视图转换到另一个名为“汽车”的视图。nextView函数如下所示:
func nextView(destination: DestinationViewType) {
switch destination {
case .car: Car()
}
}
Run Code Online (Sandbox Code Playgroud)
我以为这很简单,但我Result of 'Car' initializer is unused在案例行得到:。那么有人知道如何实现这一目标?预先非常感谢!
这是一种方法:
创建一个包含 an和 an 的struct调用:IdentifiableViewAnyViewid
struct IdentifiableView: Identifiable {
let view: AnyView
let id = UUID()
}
Run Code Online (Sandbox Code Playgroud)
创建一个@Statevar 来保存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
}
}
Run Code Online (Sandbox Code Playgroud)
然后,self.nextView分配IdentifiableView:
case .car: self.nextView = IdentifiableView(view: AnyView(Car()))
Run Code Online (Sandbox Code Playgroud)
当需要返回时使用MenuView关闭self.presentationMode.wrappedValue.dismiss()视图。这是最小视图的示例Car:
struct Car: View {
@Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>
var body: some View {
Text("Car View").onTapGesture {
self.presentationMode.wrappedValue.dismiss()
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4246 次 |
| 最近记录: |