背景
UITableViewController
私は、使用ごとにサブクラスを再作成することにより、いくつかの場所でサブクラスを使用する iPhone アプリを持っています。それらの用途の 1 つは、検索コントローラーです。
@interface TableViewController : UITableViewController
// ...
@interface SearchTableViewController : TableViewController <UISearchDisplayDelegate, UISearchBarDelegate>
ストーリーボード エディターでは、を使用する各ビューで同じテーブル ビュー、セル構造、および再利用識別子を使用していますTableViewController
。私がそれを使用しているすべての場所で、ストーリーボードはデザイン時のプロトタイプに基づいてセルを生成しているため、メソッドにセクションtableView:cellForRowAtIndexPath:
を含める必要はありません。if (cell == nil)
問題
何か間違ったことをしたため、検索コントローラーのセルが他のセルのようにストーリーボードによって生成されません。最初にif (cell == nil)
、問題を解決するためにビットを追加しましたが、検索で空白行が表示されます。実際、検索では正しい数の空白行が表示されます。検索をキャンセルすると、結果がバックグラウンドから表示されます。からのコードは次のTableViewController
とおりです。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
ModelObject* obj = [self.dataSource modelAtIndex:indexPath.row];
UILabel* name = (UILabel*) [cell viewWithTag:1];
name.text = obj.name;
return cell;
}
問題を特定するために必要な詳細が他にもあると思いますが、これがどのような原因で発生する可能性があるかについてのヒントは役に立ちます。ありがとう。