我有一个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)
}
}
但这种方法不起作用。如何用动画替换选定的行视图? 谢谢你的帮助。