テーブルビューには、UITableViewCell クラスから初期化するカスタム セルがあります。レコードの最初の文字のセクションがあり、動的に作成される indexPath があります。
テーブルビューに検索表示コントローラーを追加したかったのです。だから私は、データをフィルタリングするためのすべてのメソッドを作成しました。検索結果の画面に配列カウントを出力しているので、関数がうまく機能していると確信しています。
私の問題は、ビューが初めて読み込まれるときに、データが画面に表示されることです。しかし、検索入力を押して文字を入力すると、'UITableView dataSource must return a cell from tableView:cellForRowAtIndexPath:'
エラーが発生します。ブレークポイントを使用した後、検索後にカスタム セルが nil であることがわかりました。データは存在しますが、セルは初期化されていません。
カスタムセルの初期化に使用するコードは次のとおりです。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"ObjectCell";
SpeakerCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
NSDictionary *myObject = [[sections valueForKey:[[[sections allKeys] sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)] objectAtIndex:indexPath.section]] objectAtIndex:indexPath.row];
cell.label1.text = [myObject objectForKey:@"myValue"];
return cell;
}
IB にコントロールを配置するときに間違いを犯したと思います。そこで、オブジェクトのスクリーンショットを追加しました:
テーブルビューの接続インスペクター
私の検索表示コントローラーの接続インスペクター
編集: 問題は実際に解決されました。検索ディスプレイ コントローラーの代わりに UISearchBar を使用しましたが、この問題は未解決のままだと思います。ですから、私はそれを機能させるためにあらゆる方法を試してみたいと思っています。