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

时间:2017-03-25 21:02:41

标签: swift xcode macos desktop-application xcode-storyboard

我目前正致力于为int List::RemoveAll(int v) { if (IsEmpty()) return 0; else if (HasOnlyOne()) { if (h->data == v) { delete h; h = t = NULL; return 1; } } int numRemoved = 0; Node *curNode = h->next, *prevNode = h; while (curNode != NULL) { if (prevNode->data == v) { delete prevNode; numRemoved++; } prevNode = curNode; curNode = curNode->next; // EXC_BAD_ACCESS error here. } return numRemoved; } 开发桌面应用程序,以便同时从URL下载批量音频文件我遇到了一个关于UI设计的问题,我可以“弄清楚。

我有一个名为MacOS的类,其中包含有关输入的URL的信息(例如网址,标题,长度,作者等),我想创建一个垂直增长的自定义视图列表,添加了一个新的。

基本视图的位置如下:

enter image description here

大白区内部是我希望列表的位置。

我试图创建一个单独的视图控制器来处理每个条目,但是没有用。我知道SongEntry.swift的UI设计与MacOS有很大的不同,但我认为我正在寻找的是一种模拟来自iOS的表格视图和单元格原型的方法,但可以&找不到合适的选择。

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

1 个答案:

答案 0 :(得分:3)

你想要的是一个集合视图。对于垂直列表,您可能只使用NSTableView只有一列,并隐藏其他所有内容,例如标题。

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

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

Table View Programming Guide for Mac

详细介绍了整个过程

这个话题可能有点令人困惑。请注意,有两种主要方法:基于视图和基于NSCell的表。不要为NSCell方式烦恼,它更像是遗留下来的剩菜。

另请注意,NSTableViewDataSourceNSTableViewDelegate中的方法存在一些重叠,以提供最初可能有点混乱的数据和视图。只需使用代码和示例,就可以更清楚地使用哪种委托方法。

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