Reputation: 171
I have a view that is conditionally rendered on the state of a boolean.
It currently works but I am trying to clear this warning:
'init(destination:isActive:label:)' was deprecated in iOS 16.0: use NavigationLink(value:label:), or navigationDestination(isPresented:destination:), inside a NavigationStack or NavigationSplitView
So I am trying to navigate to a view when view wrapped in a button is pressed.
import SwiftUI
struct Question: View {
@EnvironmentObject var invoiceViewModel: InvoiceViewModel
@EnvironmentObject var settingsViewModel: SettingViewModel
@State private var showingAlert = false
var body: some View {
NavigationStack{
ZStack {
// THIS WORK BUT IS DEPRECIATED
NavigationLink(destination: BusinessDetails(), isActive: $invoiceViewModel.isShowBusinessDetaisLinkActive) {
EmptyView()
}
if invoiceViewModel.invoices().count == 0 {
// do stuff
}else{
List{
// show created items
}
// THIS WORKS FOR OTHER VIEWS BUT NOT FOR BusinessDetails()
.navigationDestination(isPresented: $invoiceViewModel.isShowInvoiceDetaisLinkActive) {
InvoiceDetailView()
}
}
VStack{
//THIS IS WHERE CONDITIONAL RENDERING IS TOGGLING THE BOOL
// THAT FIRES THE NAVIGATION LINK WHERE I AM GETTING DEPRECAITION WARNING
if !settingsViewModel.checkBusinessDetailsComplete() {
Button(action: {
invoiceViewModel.isShowBusinessDetaisLinkActive.toggle()
}, label: {
BusinessDetailsHeader()
.clipShape(RoundedRectangle(cornerRadius: 10))
})
.padding()
}
Spacer()
}
}
.navigationDestination(isPresented: $invoiceViewModel.isShowAddNewInvoice) {
AddNewInvoice()
}
.navigationTitle("Recent Invoices")
.toolbar(content: {
ToolbarItem(placement: .navigationBarTrailing) {
Button{
if !settingsViewModel.checkBusinessDetailsComplete() {
showingAlert = true
}else{
withAnimation{
invoiceViewModel.showAddNewInvoice()
}
}
} label: {
Label("Add", systemImage: "plus.circle")
}
.alert("Complete Your Business Details", isPresented: $showingAlert) {
Button("Business Details") {
invoiceViewModel.isShowBusinessDetaisLinkActive.toggle()
}
}
}
})
}
}
}
#Preview {
Question()
}
Upvotes: 0
Views: 304
Reputation: 171
It was just where I was calling my multiple navigationDestination calls. Just had to call them all at end of NavigationStack
Upvotes: 0