在选择行时替换NStableView的行视图

时间:2015-06-30 11:35:21

标签: macos swift cocoa storyboard nstableview

我有一个NsTableView,我想为表行使用两种类型的NSTableRowView。对于选定的行有复杂的NStableRowView,对于非选定的行,将有简单的NSTableRowView和两个标签。 这是我尝试过的 -

    extension CMMAccountSettingViewController:NSTableViewDelegate{
    func tableView(tableView: NSTableView, rowViewForRow row: Int) -> NSTableRowView? {
        if row == accountListTableView.selectedRow{
            var storyboard = NSStoryboard(name: "Settings", bundle: nil)
            var accountController = storyboard?.instantiateControllerWithIdentifier("account") as! CMMAccountViewController
            var rowView = accountController.view as! CMMAccountView
            return rowView
        }
        else
        {
            var rowView = accountListTableView.makeViewWithIdentifier("accountSeetingsRow", owner: self) as! CMMAccountRowView
            rowView.titleLable.stringValue = listOfAccounts[row].nickname!
            rowView.captionLable.stringValue = listOfAccounts[row].accountDisplayName!
            return rowView

        }
    }

    func tableView(tableView: NSTableView, heightOfRow row: Int) -> CGFloat {
        if accountListTableView.selectedRow == row{
          return 350
        }
        else{
          return 75
        }
    }

    func tableViewSelectionDidChange(notification: NSNotification) {
        var coloumnIndexSet = NSIndexSet(indexesInRange: NSMakeRange(0, accountListTableView.tableColumns.count))
        accountListTableView.reloadDataForRowIndexes(accountListTableView.selectedRowIndexes, columnIndexes: coloumnIndexSet)
    }
}

但这种方法不起作用。如何用动画替换选定的行视图? 谢谢你的帮助。

0 个答案:

没有答案