SwiftUI разделенный вид большой заголовок не работает на iPad - PullRequest
0 голосов
/ 26 сентября 2019

Я пытаюсь создать довольно простой макет с боковой панелью и подробным представлением на iOS с SwiftUI.Но кажется, что в подробном представлении на iPad невозможно иметь большой заголовок.На самом деле он должен выглядеть как приложение Reminders от Apple.

Что я хочу (синий текст Напоминания в подробном представлении): This is what I want, the text 'Reminders' is a large title in a detail view

Однако в моем собственном приложении это не работает.Я нашел этот пример Apple о построении списков и навигации: https://developer.apple.com/tutorials/swiftui/building-lists-and-navigation

Но он там тоже не работает.Даже если я установлю название в LandmarkDetail.swift примерно так:

VStack {
    MapView(coordinate: landmark.locationCoordinate)
        .frame(height: 300)

    CircleImage(image: landmark.image)
        .offset(x: 0, y: -130)
        .padding(.bottom, -130)

    VStack(alignment: .leading) {
        Text(landmark.name)
            .font(.title)

        HStack(alignment: .top) {
            Text(landmark.park)
                .font(.subheadline)
            Spacer()
            Text(landmark.state)
                .font(.subheadline)
        }
    }
    .padding()

    Spacer()
}
.navigationBarTitle(Text(verbatim: landmark.name), displayMode: .large)

Я проверил его на iPhone, и там все работает.Я также добавил еще NavigationView в детали, но это только ухудшило ситуацию.У меня был большой заголовок, но заголовок появился под другой панелью навигации, поэтому с огромным полем сверху.

1 Ответ

1 голос
/ 27 сентября 2019

Я пытался подобным образом сохранить большой заголовок с обеих сторон в режиме разделения, но не получилось.Так что для этого, я думаю, вы можете попытаться добавить пользовательский вид справа.Вы можете добавить NavigationView в HStack и упорядочить виды, как показано ниже: screenshot

Вот код

    var body: some View {
        HStack{
        NavigationView {
        List(landmarkData) { landmark in
            NavigationLink(destination: LandmarkDetail(landmark: landmark)) {
                LandmarkRow(landmark: landmark)
            }.isDetailLink(false)
        }
        .navigationBarTitle(Text("Landmarks"), displayMode: .large)
        }
        NavigationView {
            List(landmarkData) { landmark in
                NavigationLink(destination: LandmarkDetail(landmark: landmark)) {
                    LandmarkRow(landmark: landmark)
                }.isDetailLink(false)
            }
            .navigationBarTitle(Text("Landmarks"), displayMode: .large)
        }
        NavigationView {
            LandmarkDetail(landmark: landmarkData[0])
            .navigationBarTitle(Text("Landmarks"), displayMode: .large)
        }
    }
}

Примечание. Сейчас он не поддерживает большиеназвание с обеих сторон в iPad.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...