NSOutlineView永远不会达到数据源子级

时间:2017-11-06 18:44:14

标签: swift nsoutlineview

Swift 4,Xcode 9.1

我只能在我的NSOutlineView中获得要呈现的第一级项目。儿童用品从不起作用。下面是我的代码,其中包含显示记录到控制台的内容的注释。

class SidebarSection{
  var title:String!
  var buttonHidden:Bool!
}

class SidebarItem{
  var title:String!
}

loadStuff(){
  print(sections) //[MyApp.SidebarSection, MyApp.SidebarSection]
  print(items) //[[MyApp.SidebarItem, MyApp.SidebarItem, MyApp.SidebarItem], [MyApp.SidebarItem]]

  sidebarOutlineView.reloadData()
}

//Over in my NSOutlineViewDelegate/Datasource...
func outlineView(_ outlineView: NSOutlineView, numberOfChildrenOfItem item: Any?) -> Int {
  print(item) //nil
  print(sections) //[MyApp.SidebarSection, MyApp.SidebarSection]

  if let section = item as? SidebarSection{
    print("This never gets logged.")
    //...
  }else{
    //Sections
    print("Returned: \(sections.count)") //2
    return sections.count
  }
}

func outlineView(_ outlineView: NSOutlineView, child index: Int, ofItem item: Any?) -> Any {
  print("\(index) / \(item)") //First time: 0 / nil; Second time: 1 / nil

  if let section = item as? SidebarSection{
    print("This never gets logged, either.")
    //...
  }else{
    //Items
    return sections[index]
  } 
}

我的数据被添加到if let section = item as? SidebarSection{}数组后,我立即尝试sections,并且它检测到类型就好了。我无法弄清楚我做错了什么。

有什么想法吗?

0 个答案:

没有答案