但相较于 SwiftUI 中的网格容器( LazyVGrid、Grid )来说,Table 本质上更接近于 List 。开发者可以将 Table 视为具备列特征的 List 。 Table 与 List 的近似点: 声明逻辑接近 与 LazyVGrid( LazyHGrid )和 Grid 倾向于将数据元素放置于一个单元格( Cell )中不同,在 Table 与 List 中 Table 中数据是懒加载的,行视图( TableColumn )的 onAppear 和 onDisappear 的行为也与 List 一致 Table 与 List 并非真正意义上的布局容器,它们并不像 LazyVGrid 如果想在 Table 尚不支持或支持不完善的平台(譬如 iPhone)上实现表格功能,请根据你的需求选择合适的替代方案: 数据量较大,需要懒加载 List、LazyVGrid 基于行的交互操作( 拖拽、 上下文菜单、选择 ) List( Grid 中的 GridRow 并非真正意义上的行 ) 需要视图可渲染( 保存成图片 ) LazyVGrid、Grid 可固定的标题行 List、LazyVGrid、Grid
在实际开发中,Edvinas Byla 意识到 LazyVGrid 的性能并不理想,且不能满足他对上下文菜单行为的特定需求,因此他决定采用 NSTableView 作为替代方案。
View { if layout == .grid && sizeClass == .regular { // iPad优化的网格布局 LazyVGrid
介绍 早在 2020 年,我们就拥有了在 SwiftUI(LazyVGrid 和 LazyHGrid)中绘制网格的新视图控件。两年后,我们又获得了另一种在网格(Grid)中显示视图的视图控件。
(TMDB) 的API macoOS 官方提供的两个例子, Creating a macOS App , Building a Great Mac App with SwiftUI (有table和LazyVGrid