0

tableView でそのセルを選択したときに、 NSViewControllerNSTableViewCellの間で通信するにはどうすればよいですか? iOS では setSelected を使用できますが、OSX ではまったく異なります。NSTableCellView クラスにはそのような機能はありません。私は単純なものを見逃しているかもしれません。その細胞とどのように話すのですか?カスタムクラスセルがあり、tableViewコントローラーで次のようになりました。

func tableView(tableView: NSTableView, shouldSelectRow row: Int) -> Bool {

    let previousSelected = NSIndexSet(index: selectedRow)
    selectedRow = row
    let indset = NSIndexSet(index: row)

    // animate row expansion
    self.tableView.noteHeightOfRowsWithIndexesChanged(indset)

    // animate back the previously selected
    self.tableView.noteHeightOfRowsWithIndexesChanged(previousSelected)
    return true
}

ローの身長もあるし…

func tableView(tableView: NSTableView, heightOfRow row: Int) -> CGFloat {
    if row == selectedRow{
        return 90
    }else{
        return 40
    }
}

私がやろうとしているのは、セルが選択されたことをセルに知らせて、選択時にさまざまなものを表示できるようにすることです。誰 ?

4

2 に答える 2

2

選択はセルではなく、行で行われます。NSTableRowViewプロパティを持っていselectedます。通常、そのdrawSelectionInRect()メソッドを使用して、テーブル行の選択された外観を描画します。

セルが選択されているかどうかに基づいて、セルの動作や外観がどの程度正確に変化しますか? 代わりに、行ごとに行うべきではないと確信していますか? おそらく、 のカスタム サブクラスを使用する必要がありますNSTableRowView

必要に応じて、セル ビューから行ビューを見つけることができます。1 つの方法は、セルのスーパービューが行ビューであると仮定することnilです。もう 1 つの方法は、セルが使用する行をテーブル ビューに問い合わせてから、 を使用しrowForView(self)てテーブル ビューに行ビューを問い合わせることrowViewAtRow(_:makeIfNecessary:)です。

于 2015-10-21T03:35:17.107 に答える