SwiftUI: как использовать NavigationView в macOS? - PullRequest
2 голосов
/ 16 июня 2019

У меня есть два отдельных проекта Xcode, которые я использую для изучения SwiftUI:

  1. Настоящий проект MacOS (не Catalyst) на Mac.
  2. Проект iOS (iPhone).

Следующий код создает простой NavigationView с представлениями master-detail:

import SwiftUI

struct ListView : View {
    var body: some View {
        NavigationView {
            List() {
                NavigationButton(destination: Text("detail 1")) {
                    Text("row 1")
                }
                NavigationButton(destination: Text("detail 2")) {
                    Text("row 2")
                }
            }
        }
    }
}

#if DEBUG
struct ListView_Previews : PreviewProvider {
    static var previews: some View {
        ListView()
    }
}
#endif

На iOS работает как положено ?

Но в проекте macOS тот же код, что и выше, работает не так, как надо ?

Когда я запускаю приложение на Mac, я получаю это окно

enter image description here

И когда я нажимаю на любую строку, подробный вид просто сворачивается / исчезает, никогда не показывая мне подробный вид.

enter image description here

Есть идеи как это исправить? Может я что-то упустил? Или, может быть, это просто ошибка?

1 Ответ

1 голос
/ 17 июня 2019

У меня нет ответа, но я пытаюсь сделать то же самое и хочу добавить несколько замечаний, возможно, они помогут:

Добавить пункт назначения Просмотр:

NavigationButton(destination: DetailView()) {
            Text("Show Detail")
        }

Настройка ширины в NavigationView предотвращает исчезновение правого обзора.

Также добавим

 .onAppear { print("DetailView called") } 

в подробном представлении показывает, что, даже если он не отображается, представление фактически вызывается при нажатии кнопки.

Редактировать: это там! Вид был скрыт разделителем, перетащите его влево, чтобы увидеть подробный вид.

Редактировать 2: Xcode beta 2 выдает сообщение «NavigationView недоступно в macOS».

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