#swiftui #swiftui-navigationlink #swiftui-navigationview #swiftui-form #swiftui-picker
Вопрос:
У меня возникли проблемы с тем, чтобы поместить мой выбор в дочернюю структуру NavigationLink. Моя задача, как вы видите, после некоторого перехода (Главная страница -> Страница тестирования ->> Сборщик) и выбора любого варианта выбора, который мне нужен, он возвращает меня на страницу тестирования, но сам сборщик остается серым. Я знаю, что это можно решить, добавив NavigationView{}
дочернюю навигационную ссылку внутри, но это вызывает другую проблему, потому что у меня уже есть NavigationView{}
предок верхнего уровня. Другая
проблема_1 Другая проблема_2
Код:
import SwiftUI
struct ContentView: View {
var body: some View {
NavigationView {
List{
NavigationLink(destination: page2()) {
Text("Food input")
}
NavigationLink(destination: page3()) {
Text("Тesting page")
}
}
.navigationBarTitle("Main page")
}
}
}
struct page3: View {
@State private var selectedFlavor = Flavor.chocolate
enum Flavor: String, CaseIterable, Identifiable {
case chocolate
case vanilla
case strawberry
var id: String { self.rawValue }
}
var body: some View {
NavigationView {
Form {
Section {
Picker("Flavor", selection: $selectedFlavor) {
Text("Chocolate").tag(Flavor.chocolate)
Text("Vanilla").tag(Flavor.vanilla)
Text("Strawberry").tag(Flavor.strawberry)
}
Text("Selected flavor: (selectedFlavor.rawValue)")
}
}
}
}
}
ОБНОВЛЕНИЕ:
Узнайте, что моя консоль пытается сказать мне: «Возврат пустой, отключенной функции UIBarButtonItem для выполнения ненулевого контракта»
Я не знаю, что именно это означает, но я нашел странное решение:
.navigationViewStyle(StackNavigationViewStyle())
Документация Apple ничего об этом не говорит, но если вы настроите ее так:
struct ContentView: View {
var body: some View {
NavigationView {
List{
NavigationLink(destination: page2()) {
Text("Food input")
}
NavigationLink(destination: page3()) {
Text("Тesting page")
}
}
.navigationBarTitle("Main page")
}
.navigationViewStyle(StackNavigationViewStyle())
}
}
Все проблемы исчезнут. Пожалуйста, объясните мне, как это работает, я действительно застрял в этом.
Ответ №1:
struct ContentView: View {
var body: some View {
NavigationView {
List{
NavigationLink(destination: page2()) {
Text("Food input")
}
NavigationLink(destination: page3()) {
Text("Тesting page")
}
}
.navigationBarTitle("Main page")
}
.navigationViewStyle(StackNavigationViewStyle())
}
}