@EnvironmentObject var hvm: HomeViewModel
ZStack(alignment: .top) {
if self.hvm.moments.isEmpty && !self.isPreparingView {
VStack(alignment: .center, spacing: self.viewPadding) {
Text("Nothing to see here!")
.font(Font.pjsBold(size: 17))
Text("Check back later to see your Story Moments.")
.font(Font.pjsMedium(size: 16))
}
.foregroundColor(Color.theme.textLight)
.frame(width: geoSize.width, height: geoSize.height)
} else if !self.isPreparingView {
ASTableView(section: ASTableViewSection(id: 0, data: self.hvm.moments, contentBuilder: { moment, cell in
MediaView(showSaveAnimation: self.$showSaveAnimation, currentUserData: self.$currentUserData, moments: self.$hvm.moments, moment: moment, geo: geo, viewPadding: self.viewPadding)
}))
.onScrollDidEnd({ scrollView, velocity in
if velocity.y > 1.5 && self.hvm.momentIndex != (self.hvm.moments.count - 1) {
self.hvm.momentIndex += 1
self.scrollPosition = .pageDown(CGPoint(x: 0, y: CGFloat(self.hvm.momentIndex) * geoSize.height))
} else if velocity.y < -1.5 && self.hvm.momentIndex != 0 {
self.hvm.momentIndex -= 1
self.scrollPosition = .pageUp(CGPoint(x: 0, y: CGFloat(self.hvm.momentIndex) * geoSize.height))
} else {
self.scrollPosition = .pageZero(CGPoint(x: 0, y: CGFloat(self.hvm.momentIndex) * geoSize.height))
}
})
.scrollPositionSetter(self.$scrollPosition)
.scrollIndicatorEnabled(false)
.separatorsEnabled(false)
CustomNotifView(showNotifAnimation: self.$showSaveAnimation, imageSystemName: "checkmark", text: "Saved to your moments", notifTimeShown: 1.0, geoSize: geoSize)
.frame(width: geoSize.width, height: geoSize.height, alignment: .center)
}
}
.ignoresSafeArea(.all, edges: .top)
.onAppear {
print(self.hvm.moments)
guard self.hvm.moments.isEmpty else {
self.scrollPosition = .pageZero(CGPoint(x: 0, y: CGFloat(self.hvm.momentIndex) * geoSize.height))
return
}
if let userLiveStory = self.userLiveStory {
self.hvm.getNewLiveMedias(userData: self.currentUserData, userLiveStory: userLiveStory) {
self.isPreparingView = false
self.scrollPosition = .top
}
} else {
self.udm.getLiveUserStory(userID: self.currentUserData.id) { userLiveStory in
guard let userLiveStory = userLiveStory else { return }
self.userLiveStory = userLiveStory
self.hvm.getNewLiveMedias(userData: self.currentUserData, userLiveStory: userLiveStory) {
self.isPreparingView = false
self.scrollPosition = .top
}
}
}
}
Describe the bug
On first load the tableview works as expected, when switching to another view and going back the view is empty and this is the warning I get: "[TableView] Warning once only: UITableView was told to layout its visible cells and other contents without being in the view hierarchy (the table view or one of its superviews has not been added to a window)."
To Reproduce
Expected behaviour
I expect the view to show the original view after switching back since the data is store in an environmentobject. (cacheCells() does not work)
Xcode Version:
Simulator, Device, Both?