Published on

记录一个iOS和macOS使用导航的区别

Authors

记录一个iOS和macOS使用导航的区别

iOS的用法

List {
            ForEach(groupedArticles[index], id: \.id) { article in
                        NavigationLink(value: article) {
                            ArticleItemView(article: article)
                        }
                    }
        }
        .navigationDestination(for:Article.self) { article in
            TypingView(article:article)
                .toolbar(.hidden, for: .tabBar)
     }

macOS的用法

 List(selection: $selected) {
           ForEach(groupedArticles[index], id: \.self) { article in
                        ArticleItemView(article: article)
            }
        }

其中的区别是在List中是否需要传 selection,如果是通过NavigationLink的方式,不需要传 selection参数。因为其中的选中项的处理是由 NavigationLink + navigationDestination来决定的

如果在macOS中,不使用NavigationLink,我们采用的是NavigationSplit方案,如果我们的List是处于其中的ContentView,我们会通过selection来决定NavigationSplit中的detailView中的数据。所以需要传入selection。