「Xamarin.MacのNSTableViewでNSTableViewSourceを使う」を編集中
ナビゲーションに移動
検索に移動
この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 | 編集中の文章 | ||
1行目: | 1行目: | ||
− | == | + | ==実装1== |
− | + | Xamarin.MacにはNSTableViewSourceというNSTableViewを簡単に扱うための便利クラスがあるようだ。 | |
− | === 列となるデータを準備する === | + | ===列となるデータを準備する=== |
まずはソースの元(テーブルの1行)となるクラスを用意する。 | まずはソースの元(テーブルの1行)となるクラスを用意する。 | ||
<source lang="csharp"> | <source lang="csharp"> | ||
12行目: | 12行目: | ||
</source> | </source> | ||
− | + | ===行となるデータソースを準備する=== | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | === 行となるデータソースを準備する === | ||
次にデータソースを用意する。 | 次にデータソースを用意する。 | ||
NSTableViewSourceクラスを継承してGetRowCountメソッドとGetObjectValueメソッドをオーバーライドすることで利用可能な状態となる。 | NSTableViewSourceクラスを継承してGetRowCountメソッドとGetObjectValueメソッドをオーバーライドすることで利用可能な状態となる。 | ||
137行目: | 76行目: | ||
* Content Modeを「Cell Based」に設定し | * Content Modeを「Cell Based」に設定し | ||
* アウトレットは「_studyTableView」という名前にしておいた。 | * アウトレットは「_studyTableView」という名前にしておいた。 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
<source lang="csharp"> | <source lang="csharp"> | ||
public partial class MainWindowController : NSWindowController | public partial class MainWindowController : NSWindowController | ||
163行目: | 97行目: | ||
なんと、この状態で実行するとテーブルの表示はされるが、クリックしても行選択ができない。 | なんと、この状態で実行するとテーブルの表示はされるが、クリックしても行選択ができない。 | ||
− | === | + | ===行選択=== |
これで良いのか知らんが以下で行選択が出来るようになった。 | これで良いのか知らんが以下で行選択が出来るようになった。 | ||
<source lang="csharp"> | <source lang="csharp"> | ||
179行目: | 113行目: | ||
</source> | </source> | ||
− | === | + | ===セル編集=== |
Interface Builderを開き、各カラムに「Editable」のチェックを入れる(最初から入っていると思う)。 | Interface Builderを開き、各カラムに「Editable」のチェックを入れる(最初から入っていると思う)。 | ||
設定対象はカラムでありセルじゃないよ(Identity Inspectorを開くとクラスがNSTableColumnとなってるやつ)。 | 設定対象はカラムでありセルじゃないよ(Identity Inspectorを開くとクラスがNSTableColumnとなってるやつ)。 | ||
188行目: | 122行目: | ||
***NSTextFieldCell | ***NSTextFieldCell | ||
− | + | 次にデータソースの以下のメソッドをオーバーライドし「true」を返すようにする。 | |
前述のEditableのチェックをしておくことでこのメソッドが呼ばれるようになり、このメソッドでtrueを返すと実際に編集が可能な状態となるようだ。 | 前述のEditableのチェックをしておくことでこのメソッドが呼ばれるようになり、このメソッドでtrueを返すと実際に編集が可能な状態となるようだ。 | ||
<source lang="csharp"> | <source lang="csharp"> | ||
199行目: | 133行目: | ||
return true; | return true; | ||
} | } | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</source> | </source> | ||