0

テーブル ビューの検索バーを追加する必要があります。テーブルには、実際には「患者」というオブジェクト内に格納されている「名前」が含まれています。「患者」オブジェクトの配列があります。名前を検索するための検索バーをセットアップしますが、NSPredicate を使用してそれを行う方法は?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
 {
      static NSString* CellId= @"cell";
      UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellId];
     if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellId] ;
    }
    cell.accessoryType = UITableViewCellAccessoryNone;

     ObjPatient = [allPatientDetails objectAtIndex:indexPath.row];
     cell.textLabel.text =[NSString stringWithFormat:@"%@ %@",ObjPatient.firstName,ObjPatient.lastName];
    return cell;

}

上記は、テーブルに名前を表示するコードです。どんな提案でも大歓迎です、ありがとう

4

3 に答える 3

5

検索機能を実装するには、まず以下のリンクを参照してください -

https://developer.apple.com/library/ios/documentation/uikit/reference/UISearchBar_Class/Reference.html https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSPredicate_Class /参照/NSPredicate.html

次に、次のようにコードを変更します-

.h ファイルで配列を宣言します -

NSArray *filteredArray;

- (void)viewDidLoad メソッド -

filteredArray = allPatientDetails;

次に、UISearchBar デリゲート メソッドを実装します。

-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
    NSPredicate *predicate = [NSPredicate
                            predicateWithFormat:@"SELF.firstName contains[c] %@",
                            searchText];
    NSArray *filteredArray = [allPatientDetails filteredArrayUsingPredicate:predicate];
   [tableView reloadData];
}

既存の方法を変更します-

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

    static NSString* identifier= @"cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];

    if (!cell) {
       cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier] ;

    }
    cell.accessoryType = UITableViewCellAccessoryNone;

    ObjPatient = [filteredArray objectAtIndex:indexPath.row];
    cell.textLabel.text =[NSString stringWithFormat:@"%@ %@",ObjPatient.firstName,ObjPatient.lastName];
    return cell;
}
于 2013-10-31T06:05:48.203 に答える
0

カスタムオブジェクトを使用したnspredicateの場合、このように行うことができます。

NSPredicate *resultPredicate = [NSPredicate
                                predicateWithFormat:@"SELF.firstName contains[c] %@",
                                searchText];


self.searchedMemberNameResults = [self.listedMembers filteredArrayUsingPredicate:resultPredicate];

firstName はオブジェクトの属性です

于 2013-10-31T05:56:20.760 に答える
0

以下に、ストーリーボードのラベルに基づいてアイテムを検索するためのコードを示します。動的に検索します。私はこれをテストしましたが、動作しています。

    -(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {

        NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"job_id contains[c] %@",searchText];

        searchResultArray = [responceArrayfilteredArrayUsingPredicate:resultPredicate];

        [jobsTable reloadData];
    }
于 2016-08-09T12:07:14.773 に答える