Ниже приведен возможный подход с использованием настраиваемой кнопки возврата (примечание: при добавлении любого ведущего элемента панели навигации автоматически отключается кнопка возврата по умолчанию)
Протестировано с Xcode 11.2 / iOS 13.2
struct DemoDetailsWithCustomBack: View {
@Environment(\.presentationMode) var presentationMode
@State private var allowsBack = true
var body: some View {
Text("Details here")
.navigationBarItems(
leading: Button(action: {
if self.allowsBack {
self.presentationMode.wrappedValue.dismiss()
} else {
// activate alert here
}
}, label: { Image(systemName: "chevron.left") })
)
}
}
struct TestNavBarButton_Previews: PreviewProvider {
static var previews: some View {
NavigationView {
NavigationLink(destination: DemoDetailsWithCustomBack() ) { Text("Show Detail View") }
}
}
}