繁体   English   中英

SwiftUI View 不显示数据,直到我切换到亮或暗模式

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM