使用NavigationLink和NavigationView的SwiftUI

问题描述

我正在尝试在下面的代码中使用NavigationViewNavigationLink。 我听说NavigationLink仅在NavigationView内部有效。 但是,每当我将ScrollView嵌入到NavigationView中时,scrollView就会停止显示,并且会出现空白。我不确定其背后的原因是什么。

var body: some View {
        // I tried to embed the entire vstack into NaviationView. However,it ends up showing nothing as well
            vstack(alignment: .leading) {
                Text(self.categoryName)
                    .font(.title)
                NavigationView {
                    ScrollView(.horizontal,showsIndicators: false) {
                        HStack(alignment: .top) {
                            ForEach (self.drummers) { drummer in
                                NavigationLink("Moreinfo",destination: drummerDetail(drummer: drummer))
                                aDrummer(drummer: drummer)
                                .frame(width: 300)
                                .padding(.trailing,30)
                            }
                        }
                    }
                    .padding()
                }
            }
        
    }

解决方法

如果aDrummer是一个视图(如我假设),则请参见以下可能的解决方法-ForEach内容应为单个视图

ForEach (self.drummers) { drummer in
  VStack {
    NavigationLink("Moreinfo",destination: drummerDetail(drummer: drummer))
       aDrummer(drummer: drummer)
         .frame(width: 300)
         .padding(.trailing,30)
  }
}