创建OS X搜索过滤器面板

时间:2013-06-29 12:25:02

标签: objective-c cocoa search interface-builder

我附加了 Mac Os X功能的图像,并尝试复制它。主要是 Mac Os X 的“搜索”功能。

特别是如何通过按( + )按钮添加更多条件来缩小搜索结果范围?

使用 XCode & 界面生成器,复制其工作原理的最佳方法是什么?

我的建议计划:

  1. 使用“ 2列”创建NSTableView(基于视图的表格)。一个用于包含内容,另一个用于( + )和( - )按钮。将删除标题并在scrollView上删除scrollBars。

  2. 创建NSTableViewCell& SubClass通过 IBOutlets &可以访问它的控件的 IBActions 即可。将其放在“ 1 ”列中。

  3. 使用 PopUpControl 和相应的其他元素填充子类NSTableViewCell

  4. 使用( + )&的按钮填充“ 2 ”列。 ( - ),以及该列NSTableViewCell的子类,以及 IBOutlets & IBActions 用于控件。

  5. 这是我的出发点,我将尝试上传编辑这很快就会有我正在处理的示例项目。任何帮助表示赞赏!

    在这方面寻找您的想法和意见以及任何帮助。 enter image description here

3 个答案:

答案 0 :(得分:4)

为什么不使用NSPredicateEditor,而不是重新发明轮子。

这是一个自OS X 10.5以来内置于Cocoa中的控件,旨在实现这一目标。

答案 1 :(得分:0)

不要使用2列表视图 - 而是使用基于1列视图的表视图,并在视图中使用约束和/或手动布局代码来放置按钮。

此外,容器应该是包含2个表视图的拆分视图,并且拆分由代码管理。

答案 2 :(得分:0)

我根本不会在这里使用NSTableView。 NSTableView是一个功能强大的类。它做了很多事情 - 管理选择,突出显示所选单元格,滚动,回收已滚动屏幕的视图 - 在这种情况下没有用,有些实际上会妨碍你。您正在使用的唯一真正的“表格”是布局,您可以通过多种方式轻松获得表格布局。

但是,Maxthon Chan认为你想要一个相当精细的视图控制器对来处理表的每一行。这对类抽象出搜索查询的一个子句,并向父控制器提供一个简单的接口,一个控制器组装整个查询准备运行。对于每一行,您都需要

 - (MyQueryClause*) getQuery;

当父控制器跟踪所有活动子句并处理添加/删除按钮时:

 - (IBAction) addClause: (id) sender;
 - (IBAction) removeClause: (id) sender;