2012-02-17 78 views
0

我已經創建了一個帶有三個標籤的自定義UITableviewCell,並將值傳遞給每個標籤。它工作正常,直到現在。現在我想添加搜索欄在我的應用程序中搜索所有標籤。這裏是我的代碼..在uitableview中的SearchBar不起作用

- (void)viewDidLoad { 
[super viewDidLoad]; 
    productArray=[[NSMutableArray alloc]init]; 
//Creating a temparay objects of Person 
PersonDetail *personObj = [[PersonDetail alloc] init]; 
personObj.firstName = @"Adeem"; 
personObj.lastName = @"Basraa"; 
personObj.phoneNumber = @"123456789"; 

[productArray addObject:personObj]; 
[personObj release]; 

PersonDetail *personObj = [[PersonDetail alloc] init]; 
personObj.firstName = @"Ijaz"; 
personObj.lastName = @"Ahmed"; 
personObj.phoneNumber = @"987654321"; 

[productArray addObject:personObj]; 
[personObj release]; 

PersonDetail *personObj = [[PersonDetail alloc] init]; 
personObj.firstName = @"Waqas"; 
personObj.lastName = @"Noor"; 
personObj.phoneNumber = @"45656789"; 
    [productArray addObject:personObj]; 
[personObj release]; 

    searchData=[[NSMutableArray alloc]init]; 
[searchData addObjectsFromArray:productArray]; 

dataTable.delegate=self; 
dataTable.dataSource=self; 
[dataTable reloadData]; 





    -(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{ 
if ((bar.text !=nil)&&(![searchBar.text isEqualToString:@""])&&(bar.text.length>=3)) { 

    searchText=bar.text; 
    NSMutableArray *array=[[NSMutableArray alloc]init]; 

    for (NSString *stemp in productArray) { 

     NSRange titleResult=[stemp rangeOfString:searchText options:NSCaseInsensitiveSearch]; 
     if (titleResult.length>0) { 
      [array addObject:stemp]; 
     } 

    } 
    [bar setShowsCancelButton:YES]; 

    [self.searchData removeAllObjects]; 
    [self.searchData addObjectsFromArray:array]; 
    [self.dataTable reloadData]; 
    [array release]; 


}else { 
    [searchData removeAllObjects]; 
    [searchData addObjectsFromArray:productArray]; 
    [self.dataTable reloadData]; 

} 

問題是當我開始在搜索欄中輸入應用程序崩潰。任何幫助將不勝感激。謝謝。

回答

2

希望這可能會幫助你。 在.h文件中聲明
NSMutableArray *array;

在.m文件寫入

以下

- (void)searchBar:(UISearchBar *)theSearchBar textDidChange:(NSString *)searchText{ [copyListOfItems removeAllObjects]; if([searchText length] > 3) {

self.tableView.scrollEnabled = YES; [self searchTableView]; } else {

self.tableView.scrollEnabled = NO; } }

- (void) searchTableView {

array=[[NSMutableArray alloc]init]; NSString *searchText = searchBar.text;

for (NSString *sTemp in productArray) { NSRange titleResultsRange = [sTemp rangeOfString:searchText options:NSCaseInsensitiveSearch];

if (titleResultsRange.length > 0) [array addObject:sTemp]; }

[self.tableView reloadData]; }

我對任何錯誤道歉。