Панель поиска, я могу искать только 2 раза - PullRequest
0 голосов
/ 25 ноября 2011

У меня проблема с проектом в поисковой строке.

Внутри приложения я добавил панель поиска к моему представлению таблицы во время выполнения. Поиск работал нормально только 2 раза!

Если я попытался выполнить третий поиск, панель поиска не позволила мне ввести какие-либо данные и вернула меня на домашнюю страницу приложения.

// staffArr Array to store the staff objects
// tableData store the data that will display in table 

- (void)viewDidLoad {

[super viewDidLoad]; 

  tableData = [[NSMutableArray alloc] init]; 

  [tableData addObjectsFromArray:staffArr]; 


  self.disableViewOverlay = [[UIView alloc]

                                         initWithFrame:CGRectMake(0.0f,44.0f,320.0f,416.0f)];

self.disableViewOverlay.backgroundColor=[UIColor blackColor];

self.disableViewOverlay.alpha = 0; 




  } 

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar 

{ 


  [self searchBar:searchBar activate:YES];

} 


-(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar 

{ 

  searchBar.text=@""; 

[self searchBar:searchBar activate:NO];

} 

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {



  [self.tableData removeAllObjects]; 


  if([searchBar.text isEqualToString:@""]|| searchBar.text==nil){ 

        [staffTAB reloadData]; 

        return;} 



  for(NSInteger i=0;i<staffArr.count;i++) 

  {

        staff *sta = (staff *)[self.staffArr objectAtIndex:i];

        NSString *name =sta.staff_name; 


        NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init]; 

        NSRange r = [name rangeOfString:searchBar.text]; 

        if(r.location != NSNotFound) 

        { 

              if(r.location== 0)// checking only the start of the names. 

              { 

                        [tableData addObject:sta]; 
                  } 
            } 
            [pool release]; 
      } 
    [self searchBar:searchBar activate:NO]; 
    [self.staffTAB reloadData];

} 


- (void)searchBar:(UISearchBar *)searchBar activate:(BOOL) active
{ 

    self.staffTAB.allowsSelection = !active;
    self.staffTAB.scrollEnabled = !active; 

    if (!active)

    {
         [disableViewOverlay removeFromSuperview];
         [searchBar resignFirstResponder];
    }
    else
    {
        self.disableViewOverlay.alpha = 0;
        [self.view addSubview:self.disableViewOverlay]; 
        [UIView beginAnimations:@"FadeIn" context:nil];
        [UIView setAnimationDuration:0.5];
        self.disableViewOverlay.alpha = 0.6;
        [UIView commitAnimations]; 
        NSIndexPath *selected = [self.staffTAB indexPathForSelectedRow];
        if (selected) {
            [self.staffTAB deselectRowAtIndexPath:selected animated:NO];
        }

    }

    [searchBar setShowsCancelButton:active animated:YES];

}

Заранее спасибо

...