Cocoaにカスタマイズされたリストを実装するにはどうすればよいですか?
-
12-09-2019 - |
質問
TODOのリストに非常によく似たエントリのリストを含むココアアプリを作成したいのです。スクリーンキャストを参照してください)。問題は、私が使用すべきかどうかです
- テーブルビュー、
- CollectionViewまたは
- WebView。
それらすべてで機能する可能性があると思いますが、次の要件に最適ですか?
- エントリのリストがあります - > 1列と多くの行
- ドラッグ&ドロップで並べ替える
- 単一のエントリを選択し、削除などのアクションにキーを使用します
- エントリを開く:行が展開してより多くの入力フィールドを表示する必要があります
- カスタマイズされた外観:丸い角、影、背景グラデーション
これまでのところ、私の調査では、TableViewにはほとんどの機能がありますが、外観をカスタマイズするのが難しいと述べています。CollectionViewにはドラッグアンドドロップがありません(正しいですか?)ユーザーエクスペリエンスを傷つけ、モデルを直接入力フィールドに結合することはできません。
どの長所と短所が欠けており、何を使用することをお勧めしますか?
解決
WebViewは意味がありません。 WebViewを使用する場合、Webアプリケーションを作成することもできます。 nscollectionViewは、1時間あたりのテレビリストなど、グリッドのようなデータの方が多いです。
この場合、理にかなっている唯一のものです。 nStableViewを問題なく、5つの箇条書きすべてを実装しました。 nstableviewを拡張し、カスタマイズされた外観のためにカスタム図面を実行する必要があります。それが最も難しい部分です。
他のヒント
- エントリを開く:行が展開してより多くの入力フィールドを表示する必要があります
あなたは必要です アウトラインビュー. 。テーブルビューはフラットリスト用です。
nsoutlineViewはnStableViewのサブクラスであるため、すべてのテーブルビュー機能もアウトラインビューで機能することに注意してください。
すでにこれをやった人がいます。私が正常に使用したものはMatteo Bertozziによるもので、こちらから入手できます。 http://th30z.netsons.org/2009/03/cocoa-sidebar-with-badges-take-2/ それはかかるかもしれません 少し マッサージして適切に動作させる(特に複雑なドラッグアンドドロップ動作が必要な場合)が、リスト内のセクションのタイトルやアイテムを取得するなどの基本的な機能については、うまく機能します。
編集:これはあります 前に現れます また、Cocoa-DEVメーリングリストによくある質問です。 他にもいくつかのオプションがあります.
「fscripthowhere」を使用して、things.app自体を確認しました。
彼らは、凝縮されたTODOアイテムを提示する「DecileTableView」と呼ばれるNSTableViewのサブクラスを使用しています。崩壊したtodoアイテムは、「todocell」と呼ばれるカスタムセルを使用して実装されますが、編集時に拡張された外観は興味深いものです。その場合、必要に応じてdetailTableViewのサブビューとして挿入される「Todoeditview」というカスタムビューがあります。この編集ビューは、正しい場所のサブビューとして一時的に追加されており、TableViewの対応する行が存在している間に一時的にサイズ変更されると思います。
すべてかなり投機的です。これがどのように行われたかの詳細を知りたいです。それは素晴らしいUIです。
私はアプリでまったく同じ問題に近づいています(TODOリストと同様の大きなリストが1つあります)。ここでは、テーブルビューが非常に理にかなっていると思います。
トリックは、セル(「列」)をダブルクリックすると拡張することです。それは私がこれまでに行ったすべての進歩についてです。