2011-06-19 9 views
1
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

表はテーブルが空の場合、cellForRowAtIndexPathは何を返しますか?

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return [[BNUtilitiesQuick getBizs] count]; 
} 

はいつも私が-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPathこれは重要であるすべての

で呼び出されるべきでないことを期待する0

を返すつまりこと、空である場合、私は思います。私は物事を検索するプログラムを作っています。時には検索した後に、返される結果もありません。

しかし、とにかく呼び出されて例外があります。私は何をすべきか?

+0

ここにクラッシュログを入れてください。 –

+0

'numberOfRowsInSection'で何が返されているかを調べ、0の場合は' cellForRowAtIndexPath'が呼び出されません – onmyway133

答えて

4

-tableview:cellForRowAtIndexPath:は、テーブルビューでゼロ行が認識され、呼び出されないようにする前に呼び出すことができます。

したがって、実装では、渡される行の値が配列の境界外でないことを確認する必要があります。そうであれば、空のセルを返す必要があります(ドキュメントの返信ではnilが例外を送出します)。

0

1をカウント(またはたとえば10)として返し、1つのセルに「結果なし」の淡色のテキストが表示されるのはどうですか?

1

tableView:cellForRowAtIndexPath:が呼ばれることを単純に方法はありません(..それは約10行、9は空であり、1つのディスプレイ「結果なし」を持つことになります連絡先アプリを開き、何かを検索する)ときtableView:numberOfRowsInSection:メソッドは0を返します。カウントが誤って返されている可能性があります。

1
NSLog

ファーストプリント[[BNUtilitiesQuick getBizs] count]; 、それが0を示しており、まだ呼び出さcellForRowAtIndexPath:た場合、私は周りがぶら下がって、いくつかの幽霊がある疑いがある場合、それは本当に0

を返すかどうかを確認します。 :-)

1

多くの場合、cellForRowには巨大なswitch文があります。デフォルトの場合に戻す値が必要なことを意味します。私は通常そこには何も返さない。

これは、警告を表示しないようにコンパイラに要求されますが、実際には呼び出さないでください。このメソッドは、numberOfSectionsメソッドとnumberOdRowsInSectionメソッドで繰り返すことが原因で可能な行インデックスに対してのみ呼び出されます。

関連する問題