Среда: Xcode 11.1 работает на Catalina (19A573a) и создает приложение только для iOS.
У меня есть следующий код, который должен быть довольно простым. - У меня есть кнопки A - H (8 кнопок) - Когда я нажимаю на кнопку, я ожидаю перехода в соответствующий вид («Вид A», «Вид B» и т. Д.), Поскольку они встроены в NavigationView.
Я столкнулся с несколькими проблемами - с показанным кодом нажатие кнопки «Вид А» не работает, кроме работы других кнопок. - После повторного запуска несколько раз нажатие на кнопку А будет работать несколько раз, но в большинстве случаев не будет работать. - Если я отключу отображение всех кнопок, кроме кнопки А, то нажатие на кнопку А будет работать. - Если я отключаю отображение какой-либо одной кнопки (снова есть 8 кнопок, AH), то нажатие на первую кнопку работает.
Любой, кто хочет протестировать, может создать новый проект, скопировать все содержимое кода в файл ContentView.swift и запустить.
import SwiftUI
struct ContentView: View {
var body: some View {
NavigationView {
HStack {
Spacer()
VStack {
Spacer()
Group {
NavigationLink(destination: ViewA()) {
BasicButton(buttonName: "View A", buttonColor: .orange)
}
NavigationLink(destination: ViewB()) {
BasicButton(buttonName: "View B", buttonColor: .red)
}
NavigationLink(destination: ViewC()) {
BasicButton(buttonName: "View C", buttonColor: .green)
}
NavigationLink(destination: ViewD()) {
BasicButton(buttonName: "View D", buttonColor: .blue)
}
}
Group {
NavigationLink(destination: ViewE()) {
BasicButton(buttonName: "View E", buttonColor: .pink)
}
NavigationLink(destination: ViewF()) {
BasicButton(buttonName: "View F", buttonColor: .gray)
}
NavigationLink(destination: ViewG()) {
BasicButton(buttonName: "View G", buttonColor: .purple)
}
NavigationLink(destination: ViewH()) {
BasicButton(buttonName: "View H", buttonColor: .yellow)
}
}
Spacer()
}
Spacer()
}
.background(Color.black).edgesIgnoringSafeArea(.all)
}
}
}
struct BasicButton: View {
var buttonName: String
var buttonColor: Color
var body: some View {
Text(buttonName)
.font(.title)
.multilineTextAlignment(.center)
.foregroundColor(.white)
.frame(width: 300, height: 60)
.background(buttonColor)
.cornerRadius(5)
.padding()
}
}
struct ViewA: View {
var body: some View {
Text("View A").font(.largeTitle)
}
}
struct ViewB: View {
var body: some View {
Text("View B").font(.largeTitle)
}
}
struct ViewC: View {
var body: some View {
Text("View C").font(.largeTitle)
}
}
struct ViewD: View {
var body: some View {
Text("View D").font(.largeTitle)
}
}
struct ViewE: View {
var body: some View {
Text("View E").font(.largeTitle)
}
}
struct ViewF: View {
var body: some View {
Text("View F").font(.largeTitle)
}
}
struct ViewG: View {
var body: some View {
Text("View G").font(.largeTitle)
}
}
struct ViewH: View {
var body: some View {
Text("View H").font(.largeTitle)
}
}