[英]SwiftUI View doesn't show data until I switch to light or dark mode
这个真的让我难住了。 当用户在搜索字段中键入时,我正在加载带有 ObservedViewModel 数据的 ScrollView/VStack。 请注意,这在 iOS 14 设备中完美运行,但这是我在 13.5 上的行为
数据加载并刷新视图(所有断点都被击中),但在我将设备从暗模式切换到亮模式之前我无法真正看到它,反之亦然。 有任何想法吗?
我的搜索视图:
struct EventsSearchView: View {
var searchText: String
@Environment(\.presentationMode) var presentationMode
@ObservedObject var eventsViewModel: EventsBySearchViewModel = EventsBySearchViewModel(service: EventsBySearchService())
@ObservedObject var locationManager: LocationProvider
@State var lat: String = ""
@State var long: String = ""
init(searchText: String) {
self.searchText = searchText
locationManager = LocationProvider()
do {
try locationManager.start()
} catch {
print("no location access")
locationManager.requestAuthorization()
}
UITableView.appearance().showsVerticalScrollIndicator = false
if !searchText.isEmpty {
eventsViewModel.getEventsBySearch(keyword: searchText, latitude: lat, longitude: long)
}
}
var body: some View {
ScrollView {
VStack {
ForEach(eventsViewModel.events, id: \.self) { event in
HStack {
Spacer()
CardView(event: event, lat: lat, long: long)
Spacer()
}
}
}
.background(Color.themeBackground)
.onAppear {
if self.eventsViewModel.events.count == 0 {
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
if locationManager.authorizationStatus != nil {
self.lat = String(locationManager.location?.coordinate.latitude ?? 0)
self.long = String(locationManager.location?.coordinate.longitude ?? 0)
}
locationManager.stop()
}
}
}
}
.background(Color.themeBackground)
}
}
struct EventsSearchView_Previews: PreviewProvider {
static var previews: some View {
EventsSearchView(searchText: "")
}
}
这是创建它的视图
struct TopView: View {
@State var tabSelected: Int = 0
@State private var offset: CGFloat = 0
@State private var index = 0
@State private var showEventsSearchView: Bool = false
@State private var searchKeyword: String = ""
let spacing: CGFloat = 10
var body: some View {
VStack {
SearchView(showSearch: $showEventsSearchView, searchText: $searchKeyword)
if showEventsSearchView {
EventsSearchView(searchText: searchKeyword)
} else {
我发现这与此问题有关。 空的 HStack HACK 工作滚动视图问题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.