我用Swift创建了一个新的OSX应用程序。从视图开始,在表视图中拖动到视图中。然后我按住Ctrl键并从我的表格视图中拖动,将AppDelegate添加为dataSource
和delegate
。最后,按住Ctrl并单击并从AppDelegate拖动,为myTableView
创建一个IBOutlet到表视图。
为什么会这样?使用XCode版本6.1(6A1027)。
在此构建以下结果:
import Cocoa
class AppDelegate: NSObject, NSApplicationDelegate, NSTableViewDataSource, NSTableViewDelegate {
@IBOutlet weak var window: NSWindow!
@IBOutlet weak var myTableView: NSTableView!
func applicationDidFinishLaunching(aNotification: NSNotification?) {
}
func numberOfRowsInTableView(aTableView: NSTableView!) -> Int
{
let numberOfRows:Int = getDataArray().count
return numberOfRows
}
func tableView(tableView: NSTableView!, objectValueForTableColumn tableColumn: NSTableColumn!, row rowIndex: Int) -> AnyObject!
{
var newString: (AnyObject?) = getDataArray().objectAtIndex(rowIndex).objectForKey(tableColumn.identifier)
println(newString!)
return newString!
}
func applicationWillTerminate(aNotification: NSNotification?) {
// Insert code here to tear down your application
}
func getDataArray () -> NSArray{
var dataArray:[NSDictionary] = [["FirstName": "Debasis", "LastName": "Das"],
["FirstName": "Nishant", "LastName": "Singh"],
["FirstName": "John", "LastName": "Doe"],
["FirstName": "Jane", "LastName": "Doe"],
["FirstName": "Mary", "LastName": "Jane"]];
//println(dataArray);
return dataArray;
}
}
答案 0 :(得分:2)
当我在表格视图中拖动文本单元格时,还会添加一个表视图单元格。我真的不确定为什么,但2年前的这个答案帮助我弄明白了。 NSTableView only displaying "Table View Cell"
答案 1 :(得分:1)
我注意到" objectValueForTableColumn"只有在除此之外没有其他单元格时才有效。当Xcode6.1自动创建一个时,除非删除新单元格,否则此方法不再起作用。
要保留这些单元格甚至添加更多单元格,我们应该使用" viewForTableColumn"相反:在IB中,我命名了我的表格单元格视图" custom"然后创建了一个NSTableCellView来定位它。
我还在IB中添加了另一个单元格,一个ImageView,以说明我的例子。
let myQuotes: [String] = ["text field inside cell one", "number two", "here's the tird", "four: a fourth one", "five: and a last one"]
func numberOfRowsInTableView(tableView: NSTableView!) -> Int {
return myQuotes.count
}
func tableView(tableView: NSTableView!, viewForTableColumn tableColumn: NSTableColumn!, row: Int) -> NSView! {
var result: NSTableCellView = tableView.makeViewWithIdentifier("custom", owner: self) as NSTableCellView
result.textField.stringValue = myQuotes[row]
let myAvatar: NSImage = NSImage(byReferencingFile: "Pictures/avatar.png")
result.imageView.image = myAvatar
return result
}
我在跳过this question和这个Objective-C example一段时间之后就开始工作了。