Я создаю программы c навигации в приложении SwiftUI. Я хочу открывать экраны при изменении модели, а не когда пользователь просто нажимает кнопку. Я хочу, чтобы мой код был информативным, без лишних опций. Проблема в том, что некоторые методы SwiftUI ожидают увидеть Binding<Bool?>
вместо более описательного Binding<Bool>
. Пример:
class NavigationState: ObservableObject {
@Published var showNextScreen: Bool = false
}
struct FirstView: View {
@EnvironmentObject var navigationState: NavigationState
var body: some View {
NavigationLink("Show next screen",
destination: NextView(),
tag: true,
selection: $navigationState.showNextScreen) // <--- Error: Cannot convert value of type 'Binding<Bool>' to expected argument type 'Binding<Bool?>'
}
}
Есть ли способ создать программу c навигацию без создания опций ivar во всем приложении, изменив @Published var showNextScreen: Bool = false
на @Published var showNextScreen: Bool? = false
Потому что измените его на необязательный сделает код менее информативным, чем он должен быть.