SwiftUI "Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)" при создании поп

Добрый вечер,

Здесь я хочу обсудить одну странную ситуацию. Я делаю приложение в SwiftUI, и проблема начинается с модальной навигации.

Вот пример моего кода:

Категории ListView

struct CategoriesListView: View {
@ObservedObject var viewModel: CategoriesListViewModel
@State private var searchedText = ""
@State private var showCancelButton: Bool = false
@GestureState private var dragOffset = CGSize.zero

var body: some View {
    GeometryReader { [weak viewModel] geometry in
        NavigationView {
            ZStack(alignment: .leading) {
                GeometryReader { geo in
                    Image("bg_shape")
                        .frame(width: geo.size.width, height: geo.size.height)
                        .position(x:  geo.size.width / 2, y: geo.size.height / 4)
                }
                self.content(viewModel: viewModel)
            }.navigationBarTitle("Categories", displayMode: .automatic)
                .animation(.easeOut(duration: 0.3))
                .navigationBarHidden(self.showCancelButton)
                .navigationBarItems(leading: Button(action: {
                    viewModel?.dismiss.send(())
                }) {
                    Image("button_arrow")
                },trailing: Image("logo"))
                .gesture(DragGesture().updating(self.$dragOffset, body: { (value, state, transaction) in
                    if(value.startLocation.x < 20 && value.translation.width > 100) {
                        viewModel?.dismiss.send(())
                    }
                }))

        }
    }
}

CategoryProductsListView

struct CategoryProductsList: View {
@Environment(\.viewController) var viewRepresentative
@Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>
@ObservedObject var viewModel: CategoryProductListViewModel
@State private var searchedText = ""
@State private var showCancelButton: Bool = false
@State private var showModal: Bool = false
@GestureState private var dragOffset = CGSize.zero

var body: some View {
    GeometryReader { [weak viewModel] geometry in
        ZStack(alignment: .leading) {
            GeometryReader { geo in
                Image("bg_shape")
                    .frame(width: geo.size.width, height: geo.size.height)
                    .position(x: geo.size.width / 2, y: geo.size.height / 4)
            }
            self.content(viewModel: viewModel)
        }.navigationBarTitle("Products", displayMode: .automatic)
            .navigationBarHidden(self.showCancelButton)
            .navigationBarBackButtonHidden(true)
            .navigationBarItems(leading: Button(action: {
                UITableView.appearance().rowHeight = UITableView.automaticDimension
                self.presentationMode.wrappedValue.dismiss()
            }) {
                Image("button_arrow")
            },trailing: Image("logo"))
            .gesture(DragGesture().updating(self.$dragOffset, body: { (value, state, transaction) in
                if(value.startLocation.x < 20 && value.translation.width > 100) {
                    UITableView.appearance().rowHeight = UITableView.automaticDimension
                    self.presentationMode.wrappedValue.dismiss()
                }
            }))
    }.blur(radius: self.showModal ? 4 : 0)
}

Вот пример моей навигации по стеку:

CategoriesListView -> CategoryProductsListView -> ProductDetailView

На ProductDetaliView у меня есть кнопка, которая закрывает экран.

 Button(action: {
     self.presentationMode.wrappedValue.dismiss()}) {
        Image("button_close")
 }.buttonStyle(PlainButtonStyle()))

Ситуация 1:

Когда я модально представляю ProductDetailView и использую кнопку для отклонения, я возвращаюсь обратно в CategoriesListView, все в порядке.

Ситуация 2: Когда я модально представляю ProductDetailView и использую смахивание вниз, чтобы закрыть экран, я возвращаюсь обратно в CategoriesListView, и приложение вылетает без какого-либо журнала на экране журнала.

Кажется, это ошибка Swift UI, но я не нашел о ней никакой информации. Если у вас есть идеи, что это может быть, пожалуйста, помогите.

Хорошего дня!

РЕДАКТИРОВАТЬ:

Через несколько часов я нашел решение, проблема заключалась в изменении внешнего вида UINavigationBar.

Заключительный вопрос

1 ответ

Решение

Через несколько часов я нашел решение, проблема заключалась в изменении внешнего вида UINavigationBar.

Заключительный вопрос

Другие вопросы по тегам