.navigationTitle
на некоторых представлениях, похоже, имеет некоторые проблемы. В некоторых представлениях (и только в некоторых случаях) .navigationTitle
не изменится с .large
на .inline
, как можно было бы ожидать. Вместо этого заголовок остается на месте при прокрутке вверх, а панель навигации полностью невидима (как показано на видео ниже). Это все воспроизводимо каждый раз.
Видео о воспроизводимых .navigationTitle
ошибках
Я не нашел людей на переполнении стека или на форумах разработчиков Apple, которые сталкивались бы с этой конкретной проблемой. Есть люди, которые получили аналогичные результаты, как этот, но все они были исправлены путем удаления некоторого стилизационного кода для .navigationbar
, из которого я не вносил никаких изменений в его нигде в моем коде.
Ниже приведены несколько фрагментов моего кода:
import SwiftUI
struct WelcomeUI: View {
var body: some View {
NavigationView {
VStack {
//NavigationLink(destination: SignupUI(), label: {
//Text("Sign Up")
//}
NavigationLink(destination: LoginUI(), label: {
Text("Log In")
})
}
}
}
}
struct LoginUI: View {
var body: some View {
VStack {
NavigationLink(destination: MainUI(), label: { Text("Log In") })
//Button(action: { ... }
}
.navigationBarHidden(false)
}
}
struct MainUI: View {
@State var selectedTab: Views = .add
var body: some View {
TabView(selection: $selectedTab) {
SpendingView()
.tabItem {
Image(systemName: "bag.circle")
Text("Spending")
}.tag(Views.spending)
Text("Adding View")
.tabItem {
Image(systemName: "plus")
Text("Add")
}.tag(Views.add)
Text("Edit View")
.tabItem {
Image(systemName: "pencil")
Text("Edit")
}.tag(Views.edit)
SettingsView()
.tabItem {
Image(systemName: "gear")
Text("Settings")
}.tag(Views.settings)
}
.navigationBarTitle(Text(selectedTab.rawValue))
.navigationBarBackButtonHidden(true)
}
}
enum Views: String {
case spending = "Spending"
case add = "Add"
case edit = "Edit"
case settings = "Settings"
}
struct SettingsView: View {
var body: some View {
VStack{
ZStack {
Form {
Section(header: Text("Section Header")) {
NavigationLink(destination: WelcomeUI()) {
Text("Setting Option")
}
}
Section {
//Button("Log Out") {
//self.logout()
//}
Text("Log Out")
}
}
Button("say-high", action: {print("Hi")})
}
}
}
}
struct SpendingView: View {
var body: some View {
ScrollView{
Text("SpendingView")
NavigationLink("subSpending", destination: SubSpendingView())
}.padding()
}
}
struct SubSpendingView: View {
var body: some View {
ScrollView{
Text("SubSpendingView")
}.navigationBarTitle("SubSpending")
}
}
Это почти похоже на ошибку в самом SwiftUI только потому, что отключение центра управления заставляет его работать, но без анимации (как видно на видео). Кроме того, изменение того, какое представление выбрано первым в @State var selectedTab: Views
, похоже, позволяет выбранному представлению работать должным образом, но приводит к нарушению работы остальных вкладок.
Когда я создаю и запускаю приложение на своем iPad, оно ведет себя так, как ожидалось, без ошибок, это происходит только при запуске на моем iPhone и симуляторе iOS на Mac, как это исправить?