Я пытаюсь создать приложение Master / Detail, которое работает на iOS и iPadOS. Когда я переворачиваю приложение в альбомную ориентацию, на iPadOS оно работает должным образом; однако в iOS главное представление накладывается на представление «Подробности», а не сужается до размеров разделенного экрана. Вероятно, мне не хватает модификатора в одном из представлений, но я не могу найти решение. Любая помощь будет очень признательна.
Вот код:
struct ContentView: View {
var body: some View {
VStack(alignment: .leading) {
NavigationView {
MasterView().navigationBarTitle("Star Wars Characters")
DetailView()
}.navigationViewStyle(DoubleColumnNavigationViewStyle())
}
}
}
struct MasterView: View {
@ObservedObject var dataStore = DataStore()
var body: some View {
List {
ForEach(sortedPeople) { person in
NavigationLink(destination: DetailView(person: person)) {
PersonView(person: person)
}
}
}
}
var sortedPeople: [Person] {
return dataStore.people.sorted {$0.firstName < $1.firstName}
}
}
struct PersonView: View {
var person: Person
var body: some View {
VStack(alignment: .leading){
Text("\(person.lastName)").font(.headline).fontWeight(.ultraLight)
Text("\(person.firstName)").font(.subheadline).fontWeight(.light)
}
.padding(.leading)
}
}
struct DetailView: View {
var person = Person()
var body: some View {
VStack(alignment: .leading, spacing: 5) {
Text(displayText()).font(.title)
}.padding()
.navigationBarTitle("????????")
}
func displayText() -> String {
return person.firstName != "" ? "Hello \(person.name)" : "Click on someone to say hi"
}
}
Вот результат:
Как уже указывалось, я понимаю, что это поведение по умолчанию. Однако, если вы посмотрите на приложение Apple «Контакты», окажется, что вы можете добиться желаемого поведения.