在 Xcode 中创建自定义视图列表

Creating a List of Custom Views in Xcode

我目前正在为 MacOS 开发一个桌面应用程序,用于一次从 URL 批量下载音频文件我 运行 遇到了一个关于 UI 想不通的设计

我有一个名为 SongEntry.swift 的 class,它包含有关输入的 URL 的信息(例如 url、标题、长度、作者等)和我想创建一个垂直增长的自定义视图列表,该列表会在添加新视图时更新。

基本视图在哪里:

大白区里面是我要放列表的地方。

我试图创建一个单独的视图控制器来处理每个条目,但没有成功。我知道 MacOS 的 UI 设计与 iOS 有很大不同,但我认为我正在寻找的是一种模拟 table 视图和来自 iOS 但找不到 suitable 选项。

如果有人知道可能的解决方案或能指出正确的方向,我将不胜感激!

您想要的是 collection 视图之一。对于垂直列表,您可能只使用一列 NSTableView 并隐藏其他所有内容,例如 headers.

以下是您需要的大致步骤:

  • 您可以使用现有的视图控制器或仅为 table 创建专用视图控制器(并使用 Interface Builder 中的 'embed' 选项)
  • 此视图控制器将采用 NSTableViewDataSourceNSTableViewDelegate 协议来提供数据(您的 SongEntry objects)和每一行的视图。
  • 您设置 NSTableView 的源代码并委托给您的视图控制器。
  • 您创建一个视图作为您的 "cell",每行将使用它来显示数据。您可以在 IB 或代码中设计它。

整个过程在Table View Programming Guide for Mac中有详细描述。

这个话题可能有点令人困惑。请注意,有两种主要方法:view-based 和 NSCell-based table。不要理会 NSCell 的方式,它更像是遗留下来的东西。

另请注意,NSTableViewDataSourceNSTableViewDelegate 中的方法有一些重叠,以提供一开始可能有点混乱的数据和视图。只需尝试一下代码和示例,就会更清楚何时使用哪个委托方法。

Apple 的开发者网站和 github 上都有很多示例。也是关于 raywenderlich.com.

的一个很好的教程