私は検索機能を備えた iPhone アプリに取り組んでおり、UISearchBar に検索語を書き込むと、以下の UITabelView の出力が変更 (フィルター) されます。
ユーザーが検索バーのコンテンツを編集中にすべてのテキストを削除すると、次のコードが実行されます。
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
if([searchText isEqualToString:@""] || searchText==nil){
[tableData removeAllObjects]; //clear array that holds data for table view
[tableData addObjectsFromArray:tumorNames]; //load array with database
[searchTableView reloadData];
return;
}
}
(method continues...)
今、これは検索バー内で編集するときに問題なく機能します。バックスペース/削除ですべてのテキストを削除するか、「クリア」ボタンを押すかは関係ありません-検索フィールドがクリアされ、検索可能なすべてのアイテムがテーブルに表示されます見る。「キャンセル」ボタンを押しても同じことが言えますが、この場合、もちろん、検索バーはファーストレスポンダを辞任します。
ただし、検索が行われ、1 つ以上の結果項目がテーブル ビューに表示されている場合 (検索バーが最初のレスポンダーを辞任し、キーボードがなくなった場合)、クリア ボタンを押すことは引き続き可能ですが、次のようにアプリがクラッシュします。メッセージ:
'NSRangeException', reason: '*** -[NSCFArray objectAtIndex:]: index (0) beyond bounds (0)'
問題はテーブルビューデータの再読み込みにあるようですが、配列のインデックスに問題がある場合とそうでない場合がある理由がわかりません。
なぜこれが起こるのか誰にも分かりますか?すべての助けに感謝します。
グレゴール、スウェーデン