2012-02-17 8 views
0

私は3つのラベルを持つカスタムUITableviewCellを作成し、各ラベルに値を渡しました。 now.Nowまで、すべてのラベルを検索するために検索バーをアプリに追加したいと思っています。ここに私のコードです。SearchBar in uitableview役に立たなかった

- (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ファイルで 次の.mファイル書き込み中
NSMutableArray *array;

を宣言

- (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)}

[self.tableView reloadData]; }

私はそれで間違いをお詫び。

関連する問題