【发布时间】:2015-12-02 07:07:44
【问题描述】:
我创建了一个 os X 项目并使用 Main Menu 打开文件目录并在 tableview 上显示内容。
在我的 AppDelegate.swift 中:
class AppDelegate: NSObject, NSApplicationDelegate {
var filePath: String = String() {
didSet {
// Pass filePath to ViewController
}
}
@IBAction func openFile(sender: AnyObject) {
let myOpenDialog = NSOpenPanel()
myOpenDialog.canChooseDirectories = true
if(myOpenDialog.runModal() != 0) {
self.filePath = myOpenDialog.URL!.path!
}
}
我的 ViewController.swift:
class ViewController: NSViewController, NSTableViewDataSource, NSTableViewDelegate {
@IBOutlet weak var fileTableView: NSTableView!
private var objects: NSMutableArray! = NSMutableArray()
var fileDirectory: String = String() {
didSet {
showFileList(fileDirectory)
}
}
func showFileList(fileDirectory: String) {
var contentsInFolder: NSArray?
var isDir : ObjCBool = false
// Remove last loaded objects
self.objects.removeAllObjects()
if NSFileManager.defaultManager().fileExistsAtPath(fileDirectory, isDirectory:&isDir) {
if isDir {
contentsInFolder = try! NSFileManager.defaultManager().contentsOfDirectoryAtPath(fileDirectory)
for id in contentsInFolder! {
if ((id as! String).rangeOfString(".MOV") != nil) {
self.objects.addObject(id)
}
}
}
}
self.fileTableView.reloadData()
}
// MARK: - Table View
func numberOfRowsInTableView(tableView: NSTableView) -> Int
{
return self.objects.count
}
}
当我在 ViewController.swift 中运行 self.fileTableView.reloadData() 时,出现错误“致命错误:在展开可选值时意外发现 nil”。知道如何解决吗?
var vc = ViewController()
var filePath: String = String() {
didSet {
vc.fileDirectory = filePath
}
}
【问题讨论】:
-
我可以从我的 AppDelegate.swift 中获取
filePath并且objects不是零。但是,它无法更新我的 tableview。
标签: swift macos delegates parameter-passing nstableview