20

動的セルに加えていくつかの静的セルを使用する方法を理解しようとしていますが(私は思います)、新しいマスター詳細アプリを起動してデフォルトの動的プロトタイプを静的セルに切り替えると、クラッシュします。

私はまだこれに慣れていないので、すべてのコンポーネント(テーブルビュー、セル、デリゲート)がどのように配線されているかを理解していないと思います。静的セルに切り替えた後、3つのセルを作成しましたが、表示されません。アプリがクラッシュするだけです。

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

何卒よろしくお願いいたします。

4

1 に答える 1

56

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

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

動的セルを使用する場合は、プロトタイプセルを使用します。つまり、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プロトタイプセルを使用するときにメソッド(必須のメソッド)を実装しないと、アプリがクラッシュします。

于 2012-06-10T00:00:06.573 に答える