Desidero distribuire Elenco sorgenti utilizzando NSOutlineView in un progetto Swift.NSOutlineView arresti anomali quando viene utilizzato il metodo delegato isGroupItem con Swift
Il controller di visualizzazione di seguito funziona correttamente quando non viene richiamato il metodo delegato isGroupItem. Tuttavia, molti oggetti __NSMallocBlock__ verranno restituiti quando viene utilizzato il metodo isGroupItem. Quale non ho idea da dove vengono questi elementi. Gli articoli che ho fornito sono solo stringhe.
class ViewController: NSViewController, NSOutlineViewDataSource, NSOutlineViewDelegate {
let topLevel = ["1", "2"]
let secLevel = ["1": ["1.1", "1.2"], "2": ["2.1", "2.2"]]
func outlineView(outlineView: NSOutlineView, numberOfChildrenOfItem item: AnyObject?) -> Int {
if let str = item as? String {
let arr = secLevel[str]! as [String]
return arr.count
} else {
return topLevel.count
}
}
func outlineView(outlineView: NSOutlineView, isItemExpandable item: AnyObject) -> Bool {
return outlineView.parentForItem(item) == nil
}
func outlineView(outlineView: NSOutlineView, child index: Int, ofItem item: AnyObject?) -> AnyObject {
var output: String!
if let str = item as? String {
output = secLevel[str]![index]
} else {
output = topLevel[index]
}
return NSString(string: output)
}
func outlineView(outlineView: NSOutlineView, objectValueForTableColumn tableColumn: NSTableColumn?, byItem item: AnyObject?) -> AnyObject? {
return item
}
func outlineView(outlineView: NSOutlineView, isGroupItem item: AnyObject) -> Bool {
return (outlineView.parentForItem(item) == nil)
}
func outlineView(outlineView: NSOutlineView, viewForTableColumn tableColumn: NSTableColumn?, item: AnyObject) -> NSView? {
return outlineView.makeViewWithIdentifier("HeaderCell", owner: self) as NSTextField
}
}
Il progetto di esempio può essere scaricato here
Odora di insetto. Se si restituisce 'true', si blocca. Se si restituisce 'false' mostra la riga genitore come' malloc ... ' –
Questo è probabilmente un bug; dovrebbe "funzionare", ma non lo fa. Per favore vedi la mia risposta (presto disponibile). –