objective-c - NSTableView 中用于打开文件的按钮

标签 objective-c macos cocoa

我有一个NStableView填充有 NSMutableArray这是由 SQL 构建的数据库...一切都很好。

一个单元格显示本地存储的 pdf 的路径。我想让该单元格或文本打开 pdfPreview当点击时。该单元格可以是一个按钮或只是文本 - 这并不重要(我会做最简单的事情),只要它打开 Previewpdf 。我知道我可以实现以下调用 Preview

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

我不确定的部分是如何使单元格调用该操作...也就是说,如何将单元格转换为按钮,其中单元格的内容(路径)传递给操作作为“网址”

提前致谢...

最佳答案

创建 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"];
}

在 Storyboard/ Nib 中:

  1. 设计您的 NSTableView 和 NSTableCellView
  2. 将上述子类分配给 NSTableCellView,并且不要忘记将其标识符设置为唯一的并将其 IBOutlet 和 IBAction 连接起来

在你的 NSTableViewDataSource/Delegate 中:

  1. 使用 makeViewWithIdentifer 创建一个表格单元格:并传入您在上面分配的标识符。
  2. 在该行的表格单元格上调用 setURL:

这比要求的更彻底,但是一旦您知道如何这样做,您应该能够将其添加和扩展为您想要添加的任何其他功能。

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

相关文章:

iphone - 核心数据: Is it possible to build a desktop app to create the data model for an iPhone app with Core Data?

c++ - 在 Cocoa 项目中使用 C++ 类时找不到标准 C++ 包含

objective-c - Swift 3 或 Objective C 中的水平日历 View

macos - 在 unix 中从 'last' 命令中获取常用用户名 - 有异常(exception)

c++ - 无法使用 boost.sh 脚本制作的 Boost 框架来制作 cpp-netlib

regex - Bash 获取前 N 个非空白字符

iPhone内存管理(属性(property)专用)

objective-c - 在不触发事件的情况下更改 UISwitch 值

ios - 从 navigationController 访问推送的 Controller

objective-c - 在哪里可以启动MobileSubstrate调整编程?