All*_*lyn 70 cocoa double-click nstableview
当用户双击一行中的一行时,我需要我的应用程序打开一个窗口NSTableView.我在寻找有关如何实现这一目标的信息或示例时遇到了一些困难.任何人都能指出我正确的方向吗?
Jim*_*uls 131
看看-setDoubleAction:NSTableView 上的方法; 你可以将它设置为一个方法,就像普通的目标 - 动作系统一样,但是双击一下.
在那个动作方法中,-clickedRow将是有用的.
ama*_*sta 55
将更多基本信息添加到@JimPuls答案,以便其他新人可以获益.
这是我的表视图委托的摘录.我的代理也设置为数据源,这就是为什么你会看到与它相关的NSTableViewDelegate和NSTabeViewDataSource接口.
//界面摘录.
@interface MyTableViewDelegate : NSObject <NSTableViewDelegate, NSTableViewDataSource>
{
// This iVar needs to be connected to the table view via the IB.
IBOutlet NSTableView *tableOutlet;
}
@property (assign) IBOutlet NSTableView *tableOutlet;
- (void)doubleClick:(id)nid;
@end
Run Code Online (Sandbox Code Playgroud)
//实施摘录.
@implementation MyTableViewDelegate
@synthesize tableOutlet = _tableOutlet;
- (void)awakeFromNib {
[_tableOutlet setTarget:self];
[_tableOutlet setDoubleAction:@selector(doubleClick:)];
}
- (void)doubleClick:(id)object {
// This gets called after following steps 1-3.
NSInteger rowNumber = [_tableOutlet clickedRow];
// Do something...
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
Geo*_*ope 10
正如PR Singh所说,你可以使用cocoa绑定,你也可以传递selectedObjects.
在IB中选择表视图,然后在Bindings检查器中设置这两个绑定,如下所示:
>Double Click Target
bind to = Application delegate object (or file owner)
model key path = self
selector name = myMethod:
>Double Click Argument
bind to = array controller
controller key = selectedObjects
selector name = myMethod:
Run Code Online (Sandbox Code Playgroud)myMethod的实现方式
- (void)myMethod:(NSArray*)selectedObjects
{
NSLog(@"%@", selectedObjects);
}
Run Code Online (Sandbox Code Playgroud)
这也记录在这里:https: //developer.apple.com/library/mac/qa/qa1472/_index.html
小智 8
如果有人寻找swift 2.0版本:这对我有用.看起来比Objective C代码容易得多.
@IBOutlet weak var searchResultTable: NSTableView!
override func viewDidLoad() {
super.viewDidLoad()
searchResultTable.doubleAction = "doubleClickOnResultRow"
}
func doubleClickOnResultRow()
{
print("doubleClickOnResultRow \(searchResultTable.clickedRow)")
}
Run Code Online (Sandbox Code Playgroud)
您可以在Interface Builder中连接双击操作.按住Control键并单击表视图(确保获取表视图,而不是滚动视图或剪辑视图或表列)以获取其连接面板.在"已发送操作"部分中找到"doubleAction"项.将其连接到您选择的IBAction.
更新了 Alfred 对 Swift 5 的回答
@IBOutlet weak var searchResultTable: NSTableView!
override func viewDidLoad() {
super.viewDidLoad()
searchResultTable.target = self
searchResultTable.doubleAction = #selector(doubleClickOnResultRow)
}
@objc func doubleClickOnResultRow()
{
print("doubleClickOnResultRow \(searchResultTable.clickedRow)")
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28150 次 |
| 最近记录: |