Подробный вид частично виден до того, как была выбрана ссылка для перехода. SwiftUI для ОС Ma c. - PullRequest
1 голос
/ 13 июля 2020

Я использую NavigationView с SwiftUI MacOS (Catalina), и по какой-то причине подробный вид и его разделитель частично видны до того, как NavigationLink будет фактически выбран. В идеале я бы хотел, чтобы подробное представление было скрыто до тех пор, пока что-то в списке не будет выбрано.

Я пробовал всевозможные комбинации minWidth для всех представлений, но просто не могу заставить его отображаться правильно: SwiftUI Navigation View Weirdness

Heres my Main View:

var body: some View {
    VStack {
        NavigationView {
            List(networkManager.FileList!.items) { file in
                NavigationLink(destination: FileDetail(fileDetail: file)) {
                    FileRow(fileRow: file)
                }
            }
        }.frame(minHeight:300).background(Color.white)
    }
}

Вот мой вид строк:

var fileRow: Item
var body: some View {
     VStack(alignment: .leading) {
          HStack {
               Text(fileRow.name).font(Font.system(size: 12, weight: .regular, design: .default))
               Text(fileRow.path).font(Font.system(size: 12, weight: .regular, design: .default))
        }
    }
}

Вот мой подробный вид:

var fileDetail: Item
var body: some View {
     HStack {
          VStack {
               Text(fileDetail.name).font(.title)
               Text(fileDetail.created).font(Font.system(size: 12, weight: .regular, design: .default))
        }.background(Color.white).frame(minWidth:250, idealWidth:300, maxHeight: .infinity)
    }
}

РЕДАКТИРОВАТЬ: Просмотр в режиме отладки Иерархия выглядит так, будто для DetailView создано пустое представление с шириной представления 10: введите описание изображения здесь

1 Ответ

1 голос
/ 20 июля 2020

В macOS NavigationView имеет стиль master / details, поэтому, даже если детали не указаны, он добавляет неявные.

Вот возможное решение.

Не все зависимые объекты предоставлено, поэтому протестировано на некотором реплицированном коде. Xcode 11.4 / macOS 10.15.5.

демо

var body: some View {
    VStack {
        NavigationView {
            List(items) { file in
                NavigationLink(destination: FileDetail(fileDetail: file)) {
                    FileRow(fileRow: file)
                }
            }

            // add explicit stub view for details pane 
            // on no selection with zero width
            Rectangle().frame(maxWidth: 0, maxHeight: .infinity) 

        }.frame(minHeight:300).background(Color.white)
    }
}
...