UITableView
配列を使用してデータを一覧表示するがあります。これは正常に機能します。UISearchBar
その中で検索するためのもありますtableview
。tableviews配列でデータが一致すると、それらの行は別の可変配列に追加され、cellForRowAtIndexPath:
代わりにその可変配列からのデータが表示されます。
しかし、numberOfRowsInSection:
reloadDataを呼び出すときに呼び出されることはありません。したがって、tableview
スクロール時にクラッシュします。これは、可変配列からデータを取得しようとしているためですが、元の配列(より多くの項目がある)にある行の場合です。
私はかなり長い間デバッグしてきましたが、神の愛のためにこれの理由を見つけることができません。DatasourceとDelegateはtableview
、元の配列のデータを表示できるため、に接続されています。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
NSLog(@"isSearching: %d", isSearching);
// Return the number of rows in the section.
if(!isSearching)
return [originalArray count];
NSLog(@"isSearching - Return searchCopyListOfItems");
return [searchCopyListOfItems count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
if(!searching)
cell.textLabel.text = [originalArray objectAtIndex:indexPath.row];
else
cell.textLabel.text = [searchCopyListOfItems objectAtIndex:indexPath.row];
return cell;
}