【发布时间】:2016-09-23 17:00:45
【问题描述】:
我有一个带有图像和文本字段的 tableView,但它们没有显示数据。可能缺少什么?
我将 tableColumn 标识符设置为 MainCell... 我将 obj-c 从 here 转换为 swift。
有什么建议吗?
import Cocoa
class viewTime: NSViewController, NSTableViewDataSource, NSTableViewDelegate {
var tableContents:NSMutableArray = []
@IBOutlet var tableView: NSTableView!
override func viewDidLoad() {
super.viewDidLoad()
let path: NSString = "/Library/Application Support/Apple/iChat Icons/Flags"
let fileManager:FileManager = FileManager.default
let directoryEnum:FileManager.DirectoryEnumerator = fileManager.enumerator(atPath: path as String)!
while let file = directoryEnum.nextObject() as? NSString{
let filePath:NSString = path.appendingFormat("/%@", file)
let obj:NSDictionary = ["image": NSImage(byReferencingFile:filePath as String), "name": file.deletingPathExtension]
print("obj:\(obj)")
tableContents.add(obj)
}
self.tableView.reloadData()
}
func numberOfRows(in tableView: NSTableView) -> Int {
return tableContents.count
}
private func tableView(tableView: NSTableView, viewForTableColumn tableColumn: NSTableColumn?, row: Int) -> NSView! {
let cellView = tableView.make(withIdentifier: "MainCell", owner: self) as! NSTableCellView
let flag:NSDictionary = tableContents[row] as! NSDictionary
let identifier:NSString = tableColumn!.identifier as NSString
if (identifier == "MainCell") {
cellView.textField?.stringValue = flag["name"] as! String
cellView.imageView!.image = flag["image"] as? NSImage
return cellView
}
return nil
}
}
【问题讨论】:
-
放置一些断点来检查数据和单元格是否都有效。
-
在 print("obj:(obj)") 我在控制台中获取所有数据。还连接了 tableView 插座
-
您确定连接您的
MainCell网点(textField和imageView)吗? -
你是否也检查了
viewForTableColumn的返回值?
标签: swift xcode cocoa tableview