2011-06-22 6 views
3

まずは、私は現在webdeveloperとして雇用されていますので、私の心の中にはいくつかのものがあります:レイアウトにテーブルを使用しないでください!Cocoaのレイアウトコンテナとしてテーブルを使用しますか?

私はObjective-Cを学び、本を使ってCocoaフレームワークを扱っています。 "これらの2つの方法を組み合わせて使用​​すると、テーブルを任意のデータリストビューにすることができます。各行は任意のサイズになり、任意のセルを使用して描画できます。表示し、単にレイアウトコンテナとして使用してください。

ちょっと感じるSOこれは間違っています...しかし、これはOSXのココア開発でよく起こりますが、これを避けるべきですか?

+0

対象プラットフォーム:Mac OS XまたはiOS? –

+0

私はiOSを推測しました。なぜなら、UITableViewはレイアウトのどこにでも使われているからです(Apple独自の設定アプリなど)。同様の理由がMac OS Xにも当てはまりますが、NSTableViewを使ってレイアウトを表示すると、たいていの場合、おそらく過剰です。 – benzado

+0

@benええ、私はOPがOS Xを望んでいたと思ったが、質問を再読した後、わからない。それがOS Xの場合、 'NSTableView'にはいくつかの選択肢があります。 –

答えて

9

「レイアウト用のテーブルを使用しない」の背後にある動機は、プレゼンテーション(CSS)とコンテンツ(HTML)の分離を強制することです。それはマークアップ言語のことです。

ココアでは、パラダイムはモデルビューコントローラです。モデル(コンテンツ)をビュー(プレゼンテーション...ソート)から独立させたいと思っていますが、実際は同じではありません。

あなたがiOSについて話している場合、この方法でUITableViewを使用すると完全にコーシャーです。これは、何かで作ることができる「細胞」の表を管理するのが仕事だからです。あなたが本で見つけるかもしれないような情報の表のためのものであるという偽証はありません。 UITableViewの "table"は、実際にはHTMLの "table"と同じ概念ではありません。例えば、UITableViewはHTMLテーブルのやり方でカラムをサポートすることさえできません。

あなたがMac OS Xについて話しているのであれば、NSTableViewは概念的にはHTMLテーブルに近いです。ほとんどの場合、データ用に使用されますが、たとえばチェックボックスのグリッドを作成するために使用できます。 (しかし、それがあなたがやろうとしているのであれば、NSMatrixはおそらくもっと良い選択です)。

HTMLテーブルをレイアウトに使用する最悪の犯罪は、複数の列と行にまたがる複数のセルNSTableViewやUITableViewでアナログを持っていない技術もあります。この種のレイアウトを実現するためにNSTableViewを使用することはできませんでした。

ので:

  • は、レイアウトのために使用されている名前に単語「テーブル」とのことについて取りつくしないでください。それは悪いことではありません、ココアは実際には非常によく設計されています、あなたはちょうど領土に慣れなければなりません。

  • コンテンツ/モデルをプレゼンテーション/ビューとは別に保つことの精神に忠実にしてください。すべてがObjective-C(HTML & CSSのような2つの独立した言語の代わりに)にあるので、最初は見にくいです。

+0

それは良い答えですが、ココアではポイントが少し欠けていると思います。すべてのビューにはフレームがあり、スーパービューでの位置を表しています。ほとんどのレイアウトは、フレームに明示的にビューを配置することによって行われます。HTMLテーブルのより奇異な状況は行列です。 –

+0

良いキャッチ、私はNSMatrixについてのメモを追加しました。あなたがポイントを打つより良い方法があると思うなら、別の答えを掲示してください。たくさんの部屋があります。 – benzado

関連する問題