我有一个视图,它是根据布尔值的状态有条件地呈现的。
它目前正在工作,但我试图清除此警告:
“init(destination:isActive:label:)”在iOS 16.0中已弃用:在NavigationStack或NavigationSplitView中使用NavigationLink(value:label:)或navigationDestination(isPresented:destination:)
因此,我试图导航到一个视图时,视图 Package 在一个按钮按下。
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()
}
字符串
1条答案
按热度按时间pvcm50d11#
这只是我调用多个navigationDestination调用的地方。只是必须在NavigationStack的末尾调用它们