奇怪的行为NSTableView委托和单元格标识符

时间:2016-03-28 12:54:40

标签: xcode swift cocoa

我正在尝试使用不同的行构建NSTableView。我添加了两个表格单元格视图并设置了标识符,委托和数据源链接到委托。

enter image description here

当标识符设置为 OTFType OTFTag 时,永远不会调用委托方法tableView(tableView: NSTableView, objectValueForTableColumn tableColumn: NSTableColumn?, row: Int) -> AnyObject?。但是numberOfRowsInTableView(tableView: NSTableView) -> Int设置的行数是OK

当我删除标识符时,调用方法tableView(tableView: NSTableView, objectValueForTableColumn...但会抛出错误(当然)。

标识符设置:

rows: 96

程序继续,TableView具有适当的行数但它们是空的。

未设置标识符:

rows: 96
Hello, is this method called?
fatal error: unexpectedly found nil while unwrapping an Optional value

程序停止。

以下是我的委托方法:

func numberOfRowsInTableView(tableView: NSTableView) -> Int {
    print ("rows:", tableArrayController.arrangedObjects.count)
    return tableArrayController.arrangedObjects.count
}

func tableView(tableView: NSTableView, objectValueForTableColumn tableColumn: NSTableColumn?, row: Int) -> AnyObject? {

    print("Hello, is this method called?")

    let tableContent = tableArrayController.arrangedObjects as! [AnyObject]
    let item  = tableContent[row]
    if  item.className == OpenTypeFeature.className() {
        print("className = \(item.className)")
        let button:NSButton = tableView.makeViewWithIdentifier("OTFTag", owner: self) as! NSButton
        button.title = (item as! OpenTypeFeature).tag
        button.integerValue = 1 //TO DO later
        return button
    } else if  item.className == OpenTypeFeaturesType.className() {
        print("className = \(item.className)")
        let textField:NSTextField = tableView.makeViewWithIdentifier("OTFType", owner: self) as! NSTextField
        textField.stringValue = (item as! OpenTypeFeaturesType).name
        return textField
    }

    return nil

}

任何提示?

0 个答案:

没有答案