0
목표 C가 새로 도입되었으며 여기에 제 문제가 있습니다.검색 후 셀의 값이 잘못되었습니다.
[Messier new:1 :@"Name 1"],
[Messier new:2 :@"Name 2"]...
내가있는 tableView이 UISearchBar에, 내있는 tableView에서 이러한 배열을 밀어 : 나는 두 값의 배열, INT & 문자열을 가지고있다. 내가 셀을 탭하면 내가
내가 선택한 이름 (셀 이름)의 내 배열 int 값에서 반환해야 텍스트 버튼 "쇼"를 만들 수 있습니다. 정상적인 상태 (검색하기 전에)에서 내 버튼이 올바른 값을 반환하지만, 검색 후 잘못된 반환합니다. 예를 들어 (위의 그림을보세요) Andromeda는 숫자 11, Butterfly 20, Beehive 30, Beehive (마비 30), 검색 (Beehive 첫 번째 셀 가져 오기)을 검색 중입니다. 값 11 (Andromeda 값) 내가 원하는대로.
-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
if([searchText isEqualToString:@""] || searchText == Nil)
{
searching = NO;
}
else
{
searching = YES;
[searchArray removeAllObjects];
searchArray = [[NSMutableArray alloc] init];
searchDictionary = [[NSMutableDictionary alloc] init];
NSArray *sourceArray;
NSDictionary *sourceDictionary;
sourceArray = [[AstroData sharedAstroData] messierObjectsArray];
sourceDictionary = [[AstroData sharedAstroData] messierNameIndexesDictionarry];
for(NSString *key in [sourceDictionary allKeys])
{
NSArray *messier = [sourceDictionary objectForKey:key];
for(Messier *mess in messier)
{
NSRange result = [mess.name rangeOfString:searchText options:(NSCaseInsensitiveSearch | NSDiacriticInsensitiveSearch)];
if(result.location != NSNotFound)
{
NSMutableArray *existingArray;
if((existingArray = [searchDictionary objectForKey:key]))
{
[existingArray addObject:mess];
}
else
{
NSMutableArray *tempArray = [NSMutableArray array];
[searchDictionary setObject:tempArray forKey:key];
[tempArray addObject:mess];
}
}
}
}
for(id key in sourceArray)
{
if([searchDictionary objectForKey:key])
[searchArray addObject:key];
}
}
[table reloadAllComponents];
}
어쩌면 내가 테이블보기에 문제가 : 여기
내 serchBar 코드? 모두에게 감사하십시오.P. 제 영어) 죄송합니다