私があなたの質問を理解しているなら、これはあなたが探している説明です:
プロトタイプ(再利用性):
動的セルを使用する場合は、プロトタイプセルを使用します。つまり、IBまたはコードのいずれかで、のインスタンスを作成しUITableViewCell
、それに識別子(reuseIdentifier
)を指定します。UITableView
はこのプロトタイプを使用して、必要な数のセル(行)を生成します。UITableView
画面全体に必要な数のセルを作成(およびメモリを使用)します。これらのセルの一部が画面から消えたら、それらをUITableView
再利用します-それらをリサイクルします。
で複数のプロトタイプセルを定義できますUITableView
。アイデアは、各プロトタイプが異なる目的を果たすということです。たとえば、大きなセルが1つしかないプロトタイプセルを定義し、UILabel
その目的は静的テキストを使用することです。が1つしかない別のプロトタイプを定義しますUIImageView
。それはあなたのデザインとあなたがあなたのデータをどのように表示したいかに依存します。
プロトタイプセルを使用するには、IBで動的プロトタイプセルを使用し、を設定しidentifier
ます。次に、次UITableViewDataSource
のようなメソッドを実装する必要があります。
– tableView:numberOfRowsInSection:
– tableView:cellForRowAtIndexPath:
これらのメソッドは、UITableViewのデリゲートメソッドです。
IBを使用しない場合は、次の– tableView:cellForRowAtIndexPath:
方法でセルを作成します。
UITableViewCell * cell = [[UITableViewCell alloc] initWithStyle:(UITableViewCellStyle)style restartIdentifier:(NSString *)reuseIdentifier];
静的:
静的セルの考え方は単純です。プロトタイプセル(たとえば、1つのプロトタイプのみ)を使用して、NSArray
たとえばデータソースとして静的にフィードすることができます。メソッドを実装するタスクを実行UITableViewDataSource
するために、Appleは、ストーリーボードとIBのみを使用する静的セルを導入しました。IBでは、テーブルビューを選択し、代わりに静的セルを選択して、テキストを入力するか、画像を設定します。後でアプリの実行時に静的セルに動的な変更を加えたくないのは、それが意図されていないためです。また、価値のない多くのメソッドを実装する必要があります。選択した行を取得するのはそれほど手間がindexPath
かかりませんが、静的セルの選択から新しいビューをプッシュする必要がある場合は、コードを実装する代わりにセグエを使用するという考え方です。
静的セルを使用する場合は、UITableViewDataSource
メソッドを実装しないでください。そうしないと、アプリがクラッシュします。逆に、UITableViewDataSource
プロトタイプセルを使用するときにメソッド(必須のメソッド)を実装しないと、アプリがクラッシュします。