NSCollectionViewItemのインスタンスにNSTableViewの更新
-
21-09-2019 - |
質問
私のセットアップでは、私は、Macに接続されたボリュームのNSCollectionViewを持っています。 NSCollectionViewItemの閲覧のために私は、そのボリュームの内容をリスト内NSTableViewとNSBoxを持っています。
NSTableViewに/削除項目を追加しようとすると、私の問題が来ます。 NSBoxは一度初期化されているようですので、一つだけNSTableViewがあります。私はIBOutletにreloadDataを呼び出し、それがすべてのテーブルを更新することはできませんNSTableView I内のデータを更新したいときに、この手段ます。
私はNSBoxのサブクラスでIBOutletを作成した場合、私はそれを経由して、それを呼び出すことはできませんので、それは、例えばnilでます。
私が持って来る最も近いは、その項目がもう存在しないので、私はのtableViewを取得しreloadDataを呼び出すことができるように、例外が発生せず、カラムの行にオブジェクトを返すコードの周囲に囲みA @try @catchによるものですこれは、特定のNSTableViewを更新しているようだ。
これに伴う問題は、アイテムが削除された場合は、テーブルの端にある、またはアイテムが追加された場合、それはすべての既存のアイテムを見ることができるように、例外が発生しないということである。
誰もがNSCollectionViewItemのビュー上のNSTableViewの経験がありましたか?どのようにテーブルを更新したのですか?
解決
独自のペン先に(そのNSTableViewで)NSBoxを入れてください。たびにコレクションビュー項目のビューとしてNSBoxことをペン先、セットをロードし、新しいコレクションビュー項目を作成し、NSBoxを解放します。
は、テーブルビューを供給するためとして、最も簡単な方法は、おそらくバインディングです。バインドコレクションビュー項目が表すモデルオブジェクトの異なるプロパティにテーブルビューの各列。おそらく、手段はコレクションビューの項目ごとに、それらのうちの1つを有する、とあなたはdealloc
にリリースするよ配列、に追加され、当然のことながら、アレイコントローラを通過するとよいでしょう。