搜索栏,我只能搜索2次

时间:2011-11-25 17:14:22

标签: iphone objective-c uisearchbar

我的搜索条形码中的项目存在问题。

在应用程序内部,我在运行时向表视图添加了一个搜索栏。搜索工作只有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];

}

提前致谢

0 个答案:

没有答案