【发布时间】:2020-03-04 12:05:48
【问题描述】:
我是 SWIFT 的初学者,现在我遇到了 UI 问题。让我试着解释我的问题。
我的 homeview 屏幕数据来自使用 Observable 对象的 Web 服务,它会第一次加载数据。但是,当我尝试打开左侧幻灯片菜单时,打开左侧幻灯片菜单视图时,homeView 网络服务/可观察对象数据只是被清除。为什么我的可观察对象数据为空。让我分享我的代码:
1.----- 这是我的主视图/父视图
struct ContentView: View {
@EnvironmentObject var viewRouter: ViewRouter
var body: some View {
let drag = DragGesture()
.onEnded {
if $0.translation.width < -100 {
withAnimation {
self.viewRouter.showSlideOutMenu = false
self.viewRouter.showDepartmentsMenu = false
self.viewRouter.showAccountMenu = false
}
}
}
return GeometryReader { g in
ZStack(alignment: .leading) {
RouteChanger(viewRouter: self._viewRouter)
if self.viewRouter.showSlideOutMenu {
MainMenuView(viewRouter: self._viewRouter)
.frame(width: g.size.width/2)
.transition(.move(edge: .leading))
}
}
.gesture(drag)
}
}
}
2.----- 这是我的 RouteChanger 视图,用于导航到我的视图的不同页面。
struct RouteChanger: View {
@EnvironmentObject var viewRouter: ViewRouter
var body: some View {
GeometryReader { g in
VStack {
if self.viewRouter.currentPage == "Home" {
HomeView()
//.modifier(PageSwitchModifier())
}
}
}
}
}
3....这是我使用 Observable Object 的 homeView
struct HomeView: View {
@ObservedObject var homeController = HomeController()
var body: some View {
GeometryReader { g in
ZStack {
Color(UIColor.midTown.blue)
.edgesIgnoringSafeArea(.top)
VStack { //whole body
if self.homeController.homePageData.CODE == "0" {
ImageViewWidget(imageUrl: (self.homeController.homePageData.DATA?.headerList[0].img_url)!)
.frame(minWidth: g.size.width, maxWidth: g.size.width, minHeight: (g.size.width * UIImage(named: "header")!.size.height) / UIImage(named: "header")!.size.width, maxHeight: (g.size.width * UIImage(named: "header")!.size.height) / UIImage(named: "header")!.size.width)
}
else {
Text("Loading...")
.foregroundColor(Color.blue)
.padding()
.frame(width: g.size.width)
}
}
}
}
}
}
【问题讨论】:
标签: ios swift observable swiftui