0

魔法のレコードでコア データを使用し、テーブル ビューの検索バーでデータをフィルター処理しようとしています。

行数とセルの名前を取得する 2 つのメソッドを記述します。

    -(int) dammiNumeroCercati:(NSString *)searchBar
{
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"nome CONTAINS [cd] %@", searchBar];

    NSArray*arra = [Ricetta MR_findAllSortedBy:@"nome" ascending:YES withPredicate:predicate];


    return arra.count;
}
-(NSString*) dammiNomeRicettaCercata:(NSString *)searchBar mostrataNellaCella: (int) cella
{

   NSPredicate *predicate = [NSPredicate predicateWithFormat:@"nome CONTAINS [cd] %@", searchBar];

    NSArray *arra = [Ricetta MR_findAllSortedBy:@"nome" ascending:YES withPredicate:predicate];
    Ricetta*ctn = arra[cella];

    return [NSString stringWithFormat:@"%@", ctn.nome];
}

次に、このメソッドを numberOfRowsInSection: および cellForRowAtIndexPath: 内の if サイク​​ル内で呼び出します。

if (self.mySearchBar.isFirstResponder){

// the above methods

} else {
 // the normals methods to have all the data
}

誰かが私が間違っている場所を知っていますか?

4

1 に答える 1

0

searchBar通常、UISearchBar文字列ではなく です。

メソッドでそれを使用searchBar.textして処理する必要があります。

また、テーブル ビューのデータソース メソッドでは、どのテーブル ビューがコールバックを引き起こしているかを確認してから、正しいカウント/文字列を返す必要があります。通常、これは 2 つのテーブル (元のテーブル ビューと検索結果テーブル ビュー) へのポインターを比較することによってチェックされます。

-(NSUInteger)tableView:(UITableView*)tableView 
       numberOfRowsInSection:(NSUInteger)section {

   if (tableView == _tableView) {
      // return the usual row count
   }
   return [self dammiNumeroCercati:_searchBar.text];
}
于 2013-07-01T11:10:36.273 に答える