やり方を理解するのに結構手間取ったのがNSArrayControllerのビューになっているNSTableViewの行をドラッグ&ドロップで入れ替える実装方法。
詳細な説明は省きますが、概念さえわかれば中身は意外とシンプルです。
NSTableViewDataSourceとして以下の3つを実装すればOK。
func tableView(_ tableView: NSTableView, writeRowsWith rowIndexes: IndexSet, to pboard: NSPasteboard) -> Bool
ドラッグ&ドロップの実態は、コピー&ペーストに近いものがあります。
ここでやるべきことはNSPastboardにユーザーが移動しようとしている行のIndexSet(複数行ドラッグの可能性があるためIndexSetが渡ってきます)をセットするだけ。
(コピーに相当。)
func tableView(_ tableView: NSTableView, validateDrop info: NSDraggingInfo, proposedRow row: Int, proposedDropOperation dropOperation: NSTableViewDropOperation) -> NSDragOperation
.moveを返せばドラッグ可能になります。
func tableView(_ tableView: NSTableView, acceptDrop info: NSDraggingInfo, row: Int, dropOperation: NSTableViewDropOperation) -> Bool
NSPasteboardから取り出した(ペーストに相当)IndexSetと、移動先として渡ってきた行番号を手がかりにNSArrayControllerが管理している配列を並び替えるだけです。
わかってしまえばシンプルで泥臭い実装をするだけですね。
Touchdown 1.1公開!
Touchdown 1.1を公開しました。
ダウンロードはこちらから。
Ver.1.1の変更点は以下の通りです。
新機能
不具合修正
ぜひお試しください。
ダウンロードはこちらから。
Ver.1.1の変更点は以下の通りです。
新機能
- プリセットの並べ替え
- プリセットリストの項目をドラッグで並べ替えられるようにしました
- 「新規プリセット」メニュー項目追加
- ファイルメニューに「新規プリセット」を追加しました
- コマンド+Nでプリセットを追加できます
不具合修正
- 一部文言を修正しました
- Touch Barが適切に切り替わらないことがある不具合を修正しました
ぜひお試しください。
Touchdown ver.1.1向け追加予定機能
Touchdown ver.1.0としてリリースし便利に使っているものの、実装したかったけどまだできていない機能がいくつかあるため、今後のリリースで拡張して行く予定です。
優先度が高いものとしては
の2点。
次期ver.1.1に向けてはまず「プリセットの並び替え」を実装したいですが、細かな改善と合わせて気長に対応していく予定です。
優先度が高いものとしては
- プリセットの並び替え
- リネーム
の2点。
次期ver.1.1に向けてはまず「プリセットの並び替え」を実装したいですが、細かな改善と合わせて気長に対応していく予定です。
登録:
投稿 (Atom)
Touchdown 1.3公開!
Touchdown 1.3を公開しました。 ダウンロードは こちら から。 Ver.1.3の変更点は以下の通りです。 新機能 macOS Mojave 10.13以降に対応 ダークモードに対応 ぜひお試しください。
-
Touchdownでは複数の設定を保存して切り替えられるようにするため、NSTableViewをUIとして使います。 基本的なとこだけど、何かと分かりにくいCocoa Binding。 iOSでは使えないらしく情報も少なめなので、簡単にまとめておきます。 S...
-
TouchdownをSwift 4に変換した際に、フレームワーク側の変更に伴うコードの置換が発生していました。 ファイルのドラッグ&ドロップに関する部分ではドラッグ受付登録が、 register(forDraggedTypes: [NSFilenamesPboard...
-
macOS High SierraになりSwiftも4にバージョンアップ。 TouchdownもSwift 3からSwift 4に移行します。 基本的にはXcodeの移行ツールに従うだけで、途中で聞かれる Minimize Inference Match Swift...