2012-06-09 8 views
12

ダイナミックセルに加えていくつかのスタティックセルを持つ方法を考えようとしていますが、私は新しいマスター - ディテールアプリケーションを起動し、デフォルトのダイナミックプロトタイプを静的なセル、それはクラッシュします。スタティックセルとダイナミックセルの混乱

私はまだこれから新しいので、コンポーネント(テーブルビュー、セル、デリゲート)のすべてがどのように配線されているのか分かりません。私が静的セルに切り替えた後、私は3つのセルを作りましたが、それらは現れません。アプリはちょうどクラッシュします。

私はコードを含めることができますが、基本的には、新しいマスターディテールを作成し、スタティックセルに切り替え、3つのセルの名前を変更して(メインループ内で)クラッシュさせます。

ありがとうございました。

+0

スタックトレースを共有できますか? – sosborn

答えて

45

私はあなたの質問を理解していれば、これはあなたが探している説明です:

プロトタイプ(再利用):

あなたはダイナミック細胞を使用する場合は、あなたがプロトタイプ細胞を使用します。つまり、IBまたはコード内で、UITableViewCellのインスタンスを作成し、識別子(reuseIdentifier)を指定します。 UITableViewは、プロトタイプを使用して、必要な数のセル(行)を生成します。 UITableViewは、画面を満たすために必要な数だけセルを作成(およびメモリを使用)します。これらの細胞のいくつかは、画面をオフに行くたら、UITableViewはそれらを再利用 - にそれらをリサイクルしています。

あなたはUITableView以上プロトタイプのセルを定義することができます。アイデアは、それぞれのプロトタイプが異なる目的を果たしているということです。たとえば、1つの大きなUILabelしか持たないプロトタイプセルを定義し、その目的は静的テキストを使用することです。 UIImageViewが1つしかない別のプロトタイプを定義します。これは、デザインとデータの表示方法によって異なります。

あなたはダイナミックプロトタイプ細胞を使用して、identifierを設定し、IBで、プロトタイプ細胞を使用すること。これらの方法はのUITableViewのデリゲートメソッドです

– tableView:numberOfRowsInSection: 
– tableView:cellForRowAtIndexPath: 

:次に、あなたのようなUITableViewDataSourceメソッドを実装する必要があります。

IBを使用していない場合は、– tableView:cellForRowAtIndexPath:方法で細胞を作成します。

のUITableViewCell *セル= [[UITableViewCellのアロケーション] initWithStyle:(UITableViewCellStyle)スタイルreuseIdentifier:(NSStringの *)reuseIdentifier];

静的:

静的細胞の考えはただシンプルです。プロトタイプセル(プロトタイプのみなど)を使用して、たとえばデータソースとしてスタティックNSArrayをフィードできます。 UITableViewDataSourceメソッドを実装するタスクを実行するために、AppleはスタティックボードとIBのみを使用するスタティックセルを導入しました。 IBでは、テーブルビューを選択し、代わりにスタティックセルを選択し、テキストを入力するか、イメージを設定します。 静的なセルを動的に変更したくない場合は、あとで静的なセルを実行するときではないので、静的なセルを変更する必要はありません。選択された行のindexPathを取得する作業はあまりありませんが、スタティック・セルの選択から新しいビューをプッシュする必要がある場合は、コードを実装するのではなく、seguesを使用します。

UITableViewDataSourceメソッドを実装しないでください。そうでない場合は、アプリケーションがクラッシュし、逆の場合は、プロトタイプセルを使用するときにUITableViewDataSourceメソッド(必須)を実装しないと、アプリケーションがクラッシュします。

+0

は、私がfinetoothの櫛でそれを通過するつもりです(あなたはこのためにことを書くのですか?それとも、どこかでそれを見つけましたか?)が、UITableViewDataSourceメソッドを取り除くトリックは(「numberOfRowsInSection」を追加しなければならなかったんでした。その –

+2

うれしいです – Canopus

+0

私がこのすべてから学んだ一つの素晴らしいことは、クラスリファレンス(オーガナイザ - ドキュメント)に豊富なドキュメントがあることです。次回は –