我有一个NStableView,其中填充了一个NSMutableArray,该SQL是从pdf数据库构建的...都很好。

一个单元格显示到本地存储的pdf的路径。我想让该单元格或文本在单击时用Preview打开Preview。单元格可以是按钮,也可以是文本,只要它用pdf打开Preview,就不是很重要(我将做最简单的事情)。我知道我可以实现以下方法来调用

[[NSWorkspace sharedWorkspace] openFile:theUrl withApplication:@"Preview"];


我不确定的部分是如何使单元格调用该动作...也就是说,如何将单元格变成一个按钮,该单元格的内容(路径)作为“ theUrl”传递给该动作”

提前致谢...

最佳答案

创建NSTableCellView的子类并添加以下内容:

在您的界面中:

@property (nonatomic, strong) NSURL *url;
@property (nonatomic, weak) IBOutlet NSButton *urlButton;


在您的实现中:

- (void)setURL:(NSURL *)url {
   _url = url;
   _urlButton.title = url.absoluteString ?: @"Missing url";
}

- (IBAction)didPressURLButton {
    [[NSWorkspace sharedWorkspace] openFile:_url withApplication:@"Preview"];
}


在情节提要/笔尖中:


设计您的NSTableView和NSTableCellView
将上面的子类分配给NSTableCellView,不要忘记将其标识符设置为唯一的名称并连接其IBOutlet和IBAction


在您的NSTableViewDataSource / Delegate中:


使用makeViewWithIdentifer:创建一个表格单元格,然后传递您在上面分配的标识符。
在表格单元格中为该行调用setURL:


这比要求的要彻底,但是一旦您知道如何执行此操作,就应该可以将其添加并扩展到要添加的任何其他功能。

关于objective-c - NSTableView中的按钮以打开文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38874396/

10-10 03:32
查看更多