【问题标题】:Pre-selecting row in NSTableView not workingNSTableView 中的预选行不起作用
【发布时间】:2015-07-11 02:15:30
【问题描述】:

我在 viewDidLoad() 中使用下面的代码来尝试预先选择 tableView 对象 (tblProjectNumber) 中的表格行。编译或运行时没有错误。

一切加载正常,一旦加载视图,我可以通过鼠标单击选择表格行而不会出现任何问题。但是,我无法加载预先选择了所需默认行的视图。我在 viewDidLoad() 中尝试了以下代码(最后三行参考)。数据加载时,tableView 不显示选定的行,也不滚动 index(100) 处的行。

override func viewDidLoad() {
    super.viewDidLoad()
    self.view.wantsLayer = true
    self.view.layer?.backgroundColor = NSColor.windowBackgroundColor().CGColor
    self.view.window?.title = "Project Detail Module"
    self.view.window?.titleVisibility

    // sort the list of project numbers so that they display correctly when the view is first loaded
    self.sortProjectNumberArray()
    self.loadProjectRowDataArray()
    self.sortPPRFilesForLatestDate()

    // pre-select table row to load on initial display of the tableView
    let index = NSIndexSet(index: 100)
    self.tblProjectNumber.scrollRowToVisible(100)
    self.tblProjectNumber.selectRowIndexes(index, byExtendingSelection: true)
}

答案在这里:

已提供帮助,但我无法解决问题。此外,最后一个链接中使用的对 selectRowAtIndexPath 的调用在 Swift 中似乎不可用,因此它对我也不起作用。

【问题讨论】:

    标签: macos swift nstableview


    【解决方案1】:

    在tableView(tableView: NSTableView, viewForTableColumn tableColumn: NSTableColumn?, row: Int) -> NSView? 方法中尝试您的代码。

    不知道OSX 中哪种选择方法适用,但selectRowAtIndexPath 是iOS 的正确方法。因此,请尝试 OSX 的所有可能的 selectIndex 方法,但在实际显示 tabledata 的 viewForTableColumn 方法中。即在显示表数据时..它将检查您要选择的索引。

    希望这会有所帮助!

    【讨论】:

    • 成功了。我将相关代码添加到我的 'tableView(tableView: NSTableView, objectValueForTableColumn tableColumn: NSTableColumn?, row: Int) -> AnyObject? {}'
    猜你喜欢
    • 1970-01-01
    • 2014-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-17
    相关资源
    最近更新 更多