双击可可中的NSTableView行?


72

当用户双击中的一行时,我需要我的应用程序打开一个窗口NSTableView。我很难找到有关如何完成此操作的信息或示例。有人能指出我正确的方向吗?

Answers:


137

看一下-setDoubleAction:NSTableView上的方法;您可以将其设置为将被调用的方法,就像通常的目标操作系统一样,但是双击即可。

在该动作方法中,-clickedRow将很有用。


8
有没有办法通过IB连接它?
伊万·武伊卡(IvanVučica)2010年

25
还记得使用setTarget:设置表视图的目标,很傻,但是可以忽略
nduplessis 2011年

1
您应该将-setDoubleAction:实现为委托方法,还是应该将IBOutlet iVar创建到表,然后在iVar上调用-setDoubleAction :?
业余咖啡师,

2
@IvanVučica是的,您可以在IB中连接它。看到这个答案
罗布·马诺夫(Rob Mayoff),2015年

2
@robmayoff 5年后\ o /
IvanVučica15年

56

在@JimPuls答案中添加更多基本信息,以使可可的其他新手受益。

  1. NSTableView的IBOutlet需要在接口中声明。我认为最好在表的委托中这样做。
  2. 到表的IBOutlet需要通过Interface Builder连接。为此,请从声明表视图出口的类中按住Ctrl并拖放到IB中。释放鼠标时,将出现一个弹出窗口,其中带有在步骤#1中声明的插座的名称。选择那个。
  3. 在@implementation部分的-awakeFromNib方法上,对在步骤#1中声明并在步骤#2中连接的IBOutlet调用-setTarget:和-setDoubleAction:。

这是我的表视图代表的节选。我也将我的代表设置为数据源,因此这就是为什么您会看到与其关联的NSTableViewDelegate和NSTabeViewDataSource接口的原因。

//接口摘录。

//实施摘录。

希望这可以帮助。


10

正如PR Singh所说,您可以使用可可粉绑定,也可以传递selectedObjects。

  1. 在IB中选择表视图,然后在“绑定”检查器中按如下所示设置这两个绑定:

将myMethod实现为

这也记录在这里:https : //developer.apple.com/library/mac/qa/qa1472/_index.html


如果这些行突然不再
可供

9

如果有人需要快速的2.0版本:这对我有用。似乎比Objective C代码容易得多。


这真的很有帮助。对于那些想了解更多信息的人,doubleAction请查看此链接
Metropolis

2
对于Swift 3,函数选择器将为searchResultTable.doubleAction = #selector(doubleClickOnResultRow)
l --marc l

7

您可以在Interface Builder中连接双击动作。按住Control键并单击表视图(确保获得表视图,而不是滚动视图或剪辑视图或表列)以获取其连接面板。在“已发送的操作”部分中找到“ doubleAction”项。将其连接到您选择的IBAction。


容易挤柠檬。您可以从表视图的clickedRow方法中获得单击的行。您仍然需要答案2中所述的电源插座。
约瑟夫·露丝

您不一定需要连接到表格视图的插座,因为表格视图将自身提供为操作消息的发件人参数。
rob mayoff

1

在SWIFT 4.1上,您可以在代码中设置TableView对象的doubleAction方法,以通过使用#selector(nameOfYourFunction)执行@objc函数

在此函数内,您称为segue。您可以将新窗口链接到InterfaceBuilder上的原始窗口(而不是NSTableView对象,而是实际的ViewController对象)。

然后在准备segue的新窗口中完成所有设置:

首先在Interface Builder上:

在此处输入图片说明

当然给该segue赋予一个标识符:

在此处输入图片说明

接下来,在我们的第一个视图控制器(表视图所在的地方)内的代码:

然后,我们需要一个函数来对表视图的双击执行segue,该函数用#selector调用,因此需要对Objective C可见(即使我们正在Swift中编程),我们只需使用@启动该函数就是这样。

最后,在代码的初始设置部分中,将此函数设置为TableView的doubleAction方法,如下所示:


1

您可以对绑定执行相同的操作,首先在.h文件中声明一个mentod

在.m文件中实现相同

转到存在您的表视图的那个笔尖,选择表视图,并获得属性检查器(绑定)的倒数第二个选项卡,打开显示double click argument三角形选中绑定到复选框,选择文件的所有者,模型键路径应为“ self”,选择器名称将是“ openWindow:”,与“双击目标”公开相同的过程,这将起作用


1

更新了阿尔弗雷德·斯威夫特5的答案

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.