2015-02-25 6 views
0

У меня есть NSTableView, который я хочу заполнить 20 ячейками, каждый из которых скажет «Test». Я свободно владею UITableView, но не так много с NSTableViews, поэтому я отправился на поиски онлайн, чтобы понять это. О, как это смутило меня! Я понимаю, что мне нужно использовать функцию numberOfRowsInTableView, но как установить текст ячейки? Каждый источник, который я нахожу, все делает по-другому. Например, this сайт использует:Настройка текста ячейки NSTableView

func tableView(tableView: NSTableView!, viewForTableColumn tableColumn: NSTableColumn!, row: Int) -> NSView! { 
// 1 
var cellView: NSTableCellView = tableView.makeViewWithIdentifier(tableColumn.identifier, owner: self) as NSTableCellView 

// 2 
if tableColumn.identifier == "BugColumn" { 
    // 3 
    let bugDoc = self.bugs[row] 
    cellView.imageView!.image = bugDoc.thumbImage 
    cellView.textField!.stringValue = bugDoc.data.title 
    return cellView 
} 

return cellView 

}

Я попробовал это, но я получил сообщение об ошибке - код найден ноль, а разворачивание необязательный. Тогда я попробовал то, что я нашел here:

func tableView(tableView: NSTableView, dataCellForTableColumn tableColumn: NSTableColumn?, row: Int) -> NSCell? { 
if tableColumn == nil { return nil } 
if tableColumn!.identifier != "right" { return nil } 
let cell = NSPopUpButtonCell() 
cell.bordered = false 
cell.menu!.addItemWithTitle("one", action: nil, keyEquivalent: "") 
cell.menu!.addItemWithTitle("two", action: nil, keyEquivalent: "") 
cell.menu!.addItemWithTitle("three", action: nil, keyEquivalent: "") 
cell.selectItemAtIndex(1) // <--- obviously ignored ?! 
return cell 

}

Так что мой вопрос, как я могу установить текст ячейки? Как два примера, которые я вставил выше, отличаются тем, что они делают? Пожалуйста, сделайте некоторое представление об этом - потому что я уверен, что не могу!

-Спасибо, запутанном CodeIt

P.S. Я просмотрел несколько других источников, кроме двух названных мной. Я просто запутался ..

Edit: Найденный ноль, а разворачивание Факультативной ошибки я упомянул в первом примере находится на этой линии:

var cellView: NSTableCellView = tableView.makeViewWithIdentifier(tableColumn.identifier, owner: self) as NSTableCellView 
+0

, который по желанию не найден в процессе развертывания? – sasquatch

+0

Я получаю ошибку в var cellView: NSTableCellView = tableView.makeViewWithIdentifier (tableColumn.identifier, owner: self) как NSTableCellView. – CodeIt

+0

Вы уверены, что существует «tableColumn.identifier»? – sasquatch

ответ

0
// Get an existing cell with the MyView identifier if it exists 

var cellView?: NSTableCellView = tableView.makeViewWithIdentifier("someIdentifier", owner: self) as NSTableCellView 

// There is no existing cell to reuse so create a new one 

if cellView == nil { 
    cellView = NSTableCellView(frame: NSRect()) 
// The identifier of the NSTextField instance is set to someIdentifier. 
// This allows the cell to be reused. 
    cellView.identifier = "someIdentifier 
} 

Это должно дать вы в клетке, и вы можете продолжить. См. Apple Doc для более

Смежные вопросы