可可:如何使NSTableview显示最近的文件

问题描述 投票:-1回答:1

在Xcode中,主屏幕显示了最近的项目,我想拥有同样的东西。

这是我的目标图片

我的目标

enter image description here

这是我到目前为止所做的...

enter image description here

我这是我的视图控制器

import Cocoa

class RecentFiles: NSViewController {



    @IBOutlet weak var tableView: NSTableView!

    override func viewDidLoad() {
        super.viewDidLoad()

    }


}
xcode cocoa tableview recent-file-list
1个回答
0
投票

NSTableView不会存储自己的数据,因此您需要为其实现一个NSTableViewDataSourceNSTableViewDelegate。您可以使NSViewController类符合NSTableViewDataSourceNSTableViewDelegate

这是Objective-C中最新文件的最简单的表视图数据源。请注意,最新文件仅在基于文档的应用程序中可用。

- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
    return [[[NSDocumentController sharedDocumentController] recentDocumentURLs] count];
}

-(NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
    NSTableCellView *cell = [tableView makeViewWithIdentifier:tableColumn.identifier owner:self];
    NSString *fileName = [[[[NSDocumentController sharedDocumentController] recentDocumentURLs] objectAtIndex:row];
    cell.textField.stringValue = [[fileName URLByDeletingPathExtension] lastPathComponent];

    return cell;
}

// Return the original item 
- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
    return [[[[NSDocumentController sharedDocumentController] recentDocumentURLs] objectAtIndex:row];
}

一旦您了解了基本功能和模式,文档就会非常清晰并且很有帮助。https://developer.apple.com/documentation/appkit/nstableview?language=objc

© www.soinside.com 2019 - 2024. All rights reserved.