Я пытаюсь представить представление другого представления в SwiftUI, используя .sheet (). Когда это запускается, мое приложение вылетает без трассировки стека даже при запуске на симуляторе, и отображается эта ошибка:
EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
Я уже определил, что представленное представление не является проблемой, попытавшись представить текст («Тест») вместо моего настраиваемого представления, но я все равно получаю ту же ошибку.
.sheet(isPresented: self.$isPresenting) { () -> Text in
return Text("This is a test")
}
Это код, который устанавливает представление и пытается представить другое представление при нажатии зеленой кнопки. На устройстве это выглядит так:
struct WeekView: View {
@ObjectBinding var currentMealPlan = MealPlan(totalMealExchanges: 0, totalGraciesMeals: 0)
@State var isPresenting = false
var body: some View {
NavigationView{
VStack{
VStack(alignment: .leading){
Text("Meals at Gracies remaining: ?/\(currentMealPlan.totalGraciesMeals)")
Text("Meal Exchanges Remaining: ?/\(currentMealPlan.totalMealExchanges)")
}
List{
Section(header: Text("Monday")) {
HStack{
MealView(meal: "Breakfast", location: "Dorm ", color: Color.green)
.tapAction {
self.isPresenting.toggle()
}
.sheet(isPresented: self.$isPresenting) { () -> Text in
return Text("This is a test")
}
MealView(meal: "Lunch", location: "Gracies", color: Color.blue)
MealView(meal: "Dinner", location: "Salsarita", color: Color.yellow)
}
}
Section(header: Text("Tuesday")) {
Text("Hello World")
}
Section(header: Text("Wednesday")) {
Text("Hello World")
}
Section(header: Text("Thursday")) {
Text("Hello World")
}
Section(header: Text("Friday")) {
Text("Hello World")
}
Section(header: Text("Saturday")) {
Text("Hello World")
}
Section(header: Text("Sunday")) {
Text("Hello World")
}
}
}.navigationBarTitle("This Week")
.navigationBarItems(trailing: Button(action: {
}, label: {
Text("Help")
}))
}
}
}
struct MealView: View {
@State var meal: String
@State var location: String
@State var color: Color
@State private var showPopover = false
var body: some View {
ZStack{
Rectangle()
.fill(color)
VStack{
Text(meal)
.bold()
Text(location)
.lineLimit(2)
}
}
}}
class MealPlan: BindableObject {
let willChange = PassthroughSubject<Void, Never>
var totalMealExchanges: Int {didSet {willChange.send()}}
var totalGraciesMeals: Int {didSet {willChange.send()}}
init(totalMealExchanges: Int, totalGraciesMeals: Int) {
self.totalGraciesMeals = totalGraciesMeals
self.totalMealExchanges = totalMealExchanges
}
}
MealPlan
реализацию в свой пост, иначе мы не сможем воспроизвести проблему. Если мы не можем воспроизвести, то невозможно точно определить, откуда произошел сбой. Если вы не можете раскрыть свой MealPlan, попробуйте сократить его реализацию до минимума. В процессе сбой может исчезнуть, и вы лучше поймете, откуда взялась проблема. - person kontiki   schedule 25.07.2019