ユーザーが住所を検索する検索バーがあります。入力されたテキストが変更されるたびにセレクターが呼び出され、新しいアドレスが検索されてNSMutableArrayに格納されます。これは今のところ完全に機能します。
検索バーの下に、毎回呼び出されるUITableViewがあります。
[searchTableView reloadData]
新しいアドレスがアレイに追加された後。
最初のアドレスが見つかるとすぐに、配列に入れてsearchTableViewが呼び出され、アプリがクラッシュして次のメッセージが表示されます。
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException',
理由:'UITableView dataSourceはtableView:cellForRowAtIndexPathからセルを返す必要があります:'
これが私が使用しているコードです:
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
list = [[NSMutableArray alloc]init];
[geoCoder geocodeAddressString:self.addressSearch.text
completionHandler:^(NSArray* placemarks, NSError* error){
for (CLPlacemark* aPlacemark in placemarks)
{
for (int i=0; i<[placemarks count]; i++) {
NSString *temp = [NSString stringWithFormat:@"%@",[[[[placemarks objectAtIndex:i]addressDictionary] valueForKey:@"FormattedAddressLines"] componentsJoinedByString:@", "]];
[list addObject:temp];
[searchTableView reloadData];
NSLog(@"List: %@", list);
}
}
}];
}
- (UITableViewCell *)tableView:(UITableView *)tableVieww cellForRowAtIndexPath:(NSIndexPath *)indexPath {
...
if (tableVieww == savedTableView) {
UIView *bgColor;
cell = [self.savedTableView dequeueReusableCellWithIdentifier:[list objectAtIndex:indexPath.row]];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:[list objectAtIndex:indexPath.row]];
cell.accessoryType = UITableViewCellAccessoryNone;
bgColor = [[UIView alloc] initWithFrame:cell.frame];
[cell addSubview:bgColor];
[cell sendSubviewToBack:bgColor];
}
cell.textLabel.text = [list objectAtIndex:indexPath.row];
cell.textLabel.backgroundColor = [UIColor clearColor];
cell.textLabel.textColor = [UIColor whiteColor];
if (indexPath.row % 2 == 0){
bgColor.backgroundColor = [UIColor colorWithRed:098.0f/255.0f
green:211.0f/255.0f
blue:182.0f/255.0f alpha:0.90f];
} else {
bgColor.backgroundColor = [UIColor colorWithRed:230.0f/255.0f
green:089.0f/255.0f
blue:128.0f/255.0f alpha:0.90f];
}
}
return cell;
}
助けてくれてありがとう!
乾杯