2010-12-01 3 views
0

검색에 문제가 있습니다. 검색 결과를 올바르게 표시하지만 결과에서 항목 A를 클릭하면 항목 c의 설명이 열립니다.iPhone 검색 결과가 터치 후 잘못된 설명을 표시 함

#import "RootViewController.h" 

#import "FSDAppDelegate.h" 

#import "DetailViewController.h" 

@implementation RootViewController 

#pragma mark - 
#pragma mark Synthesizers 

@synthesize mainTableView; 
@synthesize contentsList; 
@synthesize descArray; 
@synthesize bannerImages; 
@synthesize childController; 
@synthesize searchResults; 
@synthesize savedSearchTerm; 


#pragma mark - 
#pragma mark View methods 

- (void)viewDidLoad 
{ 
    NSLog(@">>> Entering %s <<<", __PRETTY_FUNCTION__); 


    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Descriptions" ofType:@"plist"]; 

    NSArray *desc = [[NSArray alloc] initWithContentsOfFile:filePath]; 
    self.descArray = desc; 
    [desc release]; 

    UIImage *texas = [UIImage imageNamed:@"1andtexas.jpg"]; 
    UIImage *cali = [UIImage imageNamed:@"2andcalifornia.jpg"]; 
    UIImage *ny = [UIImage imageNamed:@"3andnewyork.jpg"]; 
    UIImage *tmark = [UIImage imageNamed:@"1Tmark.jpg"]; 
    UIImage *walkie = [UIImage imageNamed:@"Walkietalkie.jpg"]; 
    UIImage *onekh = [UIImage imageNamed:@"Tracingpaper.jpg"]; 
    UIImage *onetwonine = [UIImage imageNamed:@"diffusion.jpg"]; 
    UIImage *greycard = [UIImage imageNamed:@"Greycard.jpg"]; 
    UIImage *oneeighty = [UIImage imageNamed:@"Oneeighty.jpg"]; 
    UIImage *two = [UIImage imageNamed:@"Two.jpg"]; 
    UIImage *twofourteen = [UIImage imageNamed:@"Diffusion.jpg"]; 
    UIImage *twofifteen = [UIImage imageNamed:@"Diffusion.jpg"]; 
    UIImage *twosixteen = [UIImage imageNamed:@"Diffusion.jpg"]; 
    UIImage *twotwenty = [UIImage imageNamed:@"Diffusion.jpg"]; 
    UIImage *twotwentynine = [UIImage imageNamed:@"Diffusion.jpg"]; 
    UIImage *twofifty = [UIImage imageNamed:@"Diffusion.jpg"]; 
    UIImage *twofiftyone = [UIImage imageNamed:@"Diffusion.jpg"]; 
    UIImage *twofiftytwo = [UIImage imageNamed:@"Diffusion.jpg"]; 
    UIImage *twofiftythree = [UIImage imageNamed:@"Diffusion.jpg"]; 
    UIImage *twofiftyfour = [UIImage imageNamed:@"Diffusion.jpg"]; 
    UIImage *twofiftyfive = [UIImage imageNamed:@"Diffusion.jpg"]; 
    UIImage *twofiftysix = [UIImage imageNamed:@"Diffusion.jpg"]; 
    UIImage *twofiftyseven = [UIImage imageNamed:@"Diffusion.jpg"]; 
    UIImage *twofiftyeight = [UIImage imageNamed:@"Diffusion.jpg"]; 
    UIImage *thirtytwohk = [UIImage imageNamed:@"3200k.jpg"]; 



    NSArray *banners = [[NSArray alloc] initWithObjects: 
         texas, 
         cali, 
         ny, 
         tmark, 
         walkie, 
         onekh, 
         onetwonine, 
         greycard, 
         oneeighty, 
         two, 
         twofourteen, 
         twofifteen, 
         twosixteen, 
         twotwenty, 
         twotwentynine, 
         twofifty, 
         twofiftyone, 
         twofiftytwo, 
         twofiftythree, 
         twofiftyfour, 
         twofiftyfive, 
         twofiftysix, 
         twofiftyseven, 
         twofiftyeight, 
         thirtytwohk, 
         nil]; 

    self.bannerImages = banners; 

    [banners release]; 


    [super viewDidLoad]; 



    NSMutableArray *array = [[NSMutableArray alloc] initWithObjects: 
          @"#1 or NUMBER ONE", 
          @"#2 or NUMBER TWO", 
          @"#3 or NUMBER THREE", 
          @"1 or ONE", 
          @"10-100,10-1,10-200,10-2,10-4 and 20", 
          @"1000H PAPER", 
          @"129 or HEAVY FROST", 
          @"18% GRAY or GREY CARD", 
          @"180 DEGREE RULE", 
          @"2 or TWO", 
          @"214 or FULL TOUGH SPUN", 
          @"215 or HALF TOUGH SPUN", 
          @"216 or FULL WHITE DIFFUSION", 
          @"220 or WHITE FROST", 
          @"229 or QUARTER TOUGH SPUN", 
          @"250 or HALF WHITE DIFFUSION", 
          @"251 or QUARTER WHITE DIFFUSION", 
          @"252 or EIGHTH WHITE DIFFUSION", 
          @"253 or FULL HAMPSHIRE", 
          @"254 or NEW HAMPSHIRE", 
          @"255 or HOLLYWOOD FROST", 
          @"256 or HALF HAMPSHIRE FROST", 
          @"257 or QUARTER HAMPSHIRE FROST", 
          @"258 or EIGHTH HAMPSHIRE FROST", 
          @"3200K or TUNGSTEN", 
          nil]; 
    [self setContentsList:array]; 
    [array release], array = nil; 

    if ([self savedSearchTerm]) 
    { 
     [[[self searchDisplayController] searchBar] setText:[self savedSearchTerm]]; 
    } 

    NSLog(@"<<< Leaving %s >>>", __PRETTY_FUNCTION__); 
} 

- (void)viewWillAppear:(BOOL)animated 
{ 
    NSLog(@">>> Entering %s <<<", __PRETTY_FUNCTION__); 

    [super viewWillAppear:animated]; 

    [[self mainTableView] reloadData]; 

    NSLog(@"<<< Leaving %s >>>", __PRETTY_FUNCTION__); 
} 

#pragma mark - 
#pragma mark Table view datasource methods 

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView { 

    NSMutableArray *toBeReturned = [[NSMutableArray alloc]init]; 
    for(char c = 'A'; c <= 'Z'; c++) [toBeReturned addObject:[NSString stringWithFormat:@"%c",c]]; 
    return toBeReturned; 
} 

-(NSInteger)tableView:(UITableView *)tableView 
numberOfRowsInSection:(NSInteger)section 
{ 
    NSLog(@">>> Entering %s <<<", __PRETTY_FUNCTION__); 

    NSInteger rows; 

    if (tableView == [[self searchDisplayController] searchResultsTableView]) 
     rows = [[self searchResults] count]; 
    else 
     rows = [[self contentsList] count]; 


    NSLog(@"rows is: %d", rows); 
    NSLog(@"<<< Leaving %s >>>", __PRETTY_FUNCTION__); 

    return rows; 

    } 

-(UITableViewCell *) tableView:(UITableView *)tableView 
     cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    NSLog(@">>> Entering %s <<<", __PRETTY_FUNCTION__); 

    NSInteger row = [indexPath row]; 
    NSString *contentForThisRow = nil; 

    if (tableView == [[self searchDisplayController] searchResultsTableView]) 
     contentForThisRow = [[self searchResults] objectAtIndex:row]; 
    else 
     contentForThisRow = [[self contentsList] objectAtIndex:row]; 

    static NSString *CellIdentifier = @"CellIdentifier"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) 
    { 

     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
    } 

    [[cell textLabel] setText:contentForThisRow]; 

    //cell.textLabel.text = [contentsList objectAtIndex:indexPath.row]; 

    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 

    NSLog(@"<<< Leaving %s >>>", __PRETTY_FUNCTION__); 

    return cell; 
} 

#pragma mark - 
#pragma mark Table view delegate methods 

-(CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return 50; 
} 

-(NSString *) tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section 
{ 
    return @"Film Set Decipher"; 
} 

-(void) tableView:(UITableView *)tableView 
didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSLog(@">>> Entering %s <<<", __PRETTY_FUNCTION__); 

    FSDAppDelegate *delegate = (FSDAppDelegate *)[[UIApplication sharedApplication] delegate]; 
    DetailViewController *detailVC = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil]; 
    detailVC.banner = [bannerImages objectAtIndex:indexPath.row]; 
    detailVC.description = [descArray objectAtIndex:indexPath.row]; 
    detailVC.title = [contentsList objectAtIndex:indexPath.row]; 
    self.childController = detailVC; 
    [delegate.navigationController pushViewController:childController animated:YES]; 


    [detailVC release]; 

    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 

    NSLog(@"<<< Leaving %s >>>", __PRETTY_FUNCTION__); 
} 

#pragma mark - 
#pragma mark UISearchDisplayController Delegate Methods 

- (BOOL)searchDisplayController:(UISearchDisplayController *)controller 
shouldReloadTableForSearchString:(NSString *)searchString 
{ 
    NSLog(@">>> Entering %s <<<", __PRETTY_FUNCTION__); 

    [self handleSearchForTerm:searchString]; 

    NSLog(@"<<< Leaving %s >>>", __PRETTY_FUNCTION__); 
    return YES; 
} 

- (void)searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller 
{ 
    NSLog(@">>> Entering %s <<<", __PRETTY_FUNCTION__); 

    [self setSavedSearchTerm:nil]; 

    [[self mainTableView] reloadData]; 

    NSLog(@"<<< Leaving %s >>>", __PRETTY_FUNCTION__); 
} 
#pragma mark - 
#pragma mark Memory Management 

- (void)didReceiveMemoryWarning { 
    NSLog(@"Memory warning!"); 
    [super didReceiveMemoryWarning]; 
} 
- (void)dealloc 
{ 
    NSLog(@">>> Entering %s <<<", __PRETTY_FUNCTION__); 

    [mainTableView release]; mainTableView = nil; 
    [contentsList release]; contentsList = nil; 
    [descArray release]; descArray = nil; 
    [bannerImages release]; bannerImages = nil; 
    [childController release]; childController = nil; 
    [searchResults release], searchResults = nil; 
    [savedSearchTerm release], savedSearchTerm = nil; 

    [super dealloc]; 

    NSLog(@"<<< Leaving %s >>>", __PRETTY_FUNCTION__); 
} 

- (void)viewDidUnload { 
    NSLog(@">>> Entering %s <<<", __PRETTY_FUNCTION__); 

    self.mainTableView = nil; 
    self.contentsList = nil; 
    self.descArray = nil; 
    self.bannerImages = nil; 
    self.childController = nil; 

    [super viewDidUnload]; 

    [self setSavedSearchTerm:[[[self searchDisplayController] searchBar] text]]; 

    [self setSearchResults:nil]; 

    NSLog(@"<<< Leaving %s >>>", __PRETTY_FUNCTION__); 

} 

- (void)handleSearchForTerm:(NSString *)searchTerm 
{ 
    NSLog(@">>> Entering %s <<<", __PRETTY_FUNCTION__); 

    [self setSavedSearchTerm:searchTerm]; 

    if ([self searchResults] == nil) 
    { 
     NSMutableArray *array = [[NSMutableArray alloc] init]; 
     [self setSearchResults:array]; 
     [array release], array = nil; 
    } 

    [[self searchResults] removeAllObjects]; 

    if ([[self savedSearchTerm] length] != 0) 
    { 
     for (NSString *currentString in [self contentsList]) 
     { 
      if ([currentString rangeOfString:searchTerm options:NSCaseInsensitiveSearch].location != NSNotFound) 
      { 
       [[self searchResults] addObject:currentString]; 
      } 
     } 
    } 

    NSLog(@"<<< Leaving %s >>>", __PRETTY_FUNCTION__); 
} 

@end 

확실치 않습니다. plist에서 내 설명을 당깁니다. 그것은 detailVC.title = [contentsList objectAtIndex : IndexPath.row];처럼 보입니다. 또한 descArray를 사용할 수 있어야합니까? 아이디어?

미리 감사드립니다.

+0

bannerImages이 배열 또는 소스 여과? – KingofBliss

+0

어떻게 알 수 있습니까? 그것은 plist 아니에요. 그 안에서. – Draken182

답변

0

U 같은 조건에서 두 DIFF 배열을 사용한다 ..

다음과 같은 코드가 우르 있어야

if(searching==YES) 

{ 

//retrieve the values from source array 

} 

else 

{ 

//retrieve the values from filtered array 

} 
+0

이렇게 : if (tableView == [[self searchDisplayController] searchResultsTableView]) \t \t contentForThisRow = [[self searchResults] objectAtIndex : row]; \t else \t \t contentForThisRow = [[self contentsList] objectAtIndex : row]; – Draken182

관련 문제