2016-09-29 11 views
0

検索テーブルが空ですが、新しいアレイがupdateSearchResultsForSearchControllerに変更されています。私はかなり新しいiOSになっていて、ユーザーの友達から検索するためのテーブルを作ろうとしていました。私はこれについて正しく行きますか?私は一日中検索し、他の投稿はinitWithSearchResultsController:nilを持っていますが、これはうまくいきません。UISearchControllerがテーブルビューを表示していません

#import "PFSearchTableViewController.h" 
#import "PFSearchViewCell.h" 

@interface PFSearchTableViewController(){ 
@property (strong, nonatomic) UISearchController * searchController; 
@property (strong, nonatomic) UITableViewController * resultsController; 
} 
@end 

@implementation PFSearchTableViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    self.resultsController = [UITableViewController alloc]; 
    self.resultsController.tableView.dataSource = self; 
    self.resultsController.tableView.delegate = self; 
    self.searchController = [[UISearchController alloc] initWithSearchResultsController:self.resultsController]; 
    self.tableView.tableHeaderView = self.searchController.searchBar; 
    self.searchController.searchResultsUpdater = self; 

} 

-(void)updateSearchResultsForSearchController:(UISearchController *)searchController{ 

    NSString * dictionaryKey = @"firstName"; 
    NSPredicate * predicate = [NSPredicate predicateWithFormat:@"user.%K CONTAINS[cd] %@", dictionaryKey, searchController.searchBar.text]; 
    self.filetedFriendsList = [self.friendsList filteredArrayUsingPredicate:predicate]; 
    if (self.filetedFriendsList.count > 0) { 


    NSLog(@"^^^ %@", self.filetedFriendsList);} 
    [self.resultsController.tableView reloadData]; 

} 

#pragma mark - Table view data source 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    if (tableView == self.tableView) { 
     return 1; 
    }else{ 
     return 1; 

} 

} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
if (tableView == self.tableView) { 
    return self.friendsList.count; 
}else{ 
    return self.filetedFriendsList.count; 
} 
} 


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

    static NSString * cellId = @"cell"; 

    PFSearchViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId]; 

    if (cell == nil) { 
     cell = [[PFSearchViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellId]; 

} 
    if (tableView == self.tableView) { 
     NSLog(@"^^^2"); 
     cell.nameLabel.text = nil; 
     cell.profileImageView.file =nil; 
     cell.pfObject =nil; 

     CALayer *imageLayer = cell.profileImageView.layer; 
     [imageLayer setCornerRadius:5]; 
     [imageLayer setBorderWidth:0]; 
     [imageLayer setMasksToBounds:YES]; 
     [cell.profileImageView.layer setCornerRadius:cell.profileImageView.frame.size.width/2]; 
     [cell.profileImageView.layer setMasksToBounds:YES]; 
     PFFriendsObject * pfObject = [self.friendsList objectAtIndex:indexPath.row]; 
     cell.pfObject = pfObject; 
     PFUser * user = pfObject.user; 
     NSString * fullName = [NSString stringWithFormat:@"%@ %@", user[@"firstName"], user[@"lastName"]]; 
     cell.nameLabel.text = fullName; 
     PFFile * pic = pfObject.pictureFile; 
     cell.profileImageView.file = pic; 
     [cell.profileImageView loadInBackground]; 

}else{ 


     cell.nameLabel.text = nil; 
     cell.profileImageView.file =nil; 
     cell.pfObject =nil; 
     if (self.filetedFriendsList.count == 0) { 
     NSLog(@"^^^3"); 
     }else{ 
     NSLog(@"^^^4"); 
     CALayer *imageLayer = cell.profileImageView.layer; 
     [imageLayer setCornerRadius:5]; 
     [imageLayer setBorderWidth:0]; 
     [imageLayer setMasksToBounds:YES]; 
     [cell.profileImageView.layer setCornerRadius:cell.profileImageView.frame.size.width/2]; 
     [cell.profileImageView.layer setMasksToBounds:YES]; 
     PFFriendsObject * pfObject = [self.filetedFriendsList objectAtIndex:indexPath.row]; 
     cell.pfObject = pfObject; 
     PFUser * user = pfObject.user; 
     NSString * fullName = [NSString stringWithFormat:@"%@ %@", user[@"firstName"], user[@"lastName"]]; 
     cell.nameLabel.text = fullName; 
     PFFile * pic = pfObject.pictureFile; 
     cell.profileImageView.file = pic; 
     [cell.profileImageView loadInBackground]; 

    } 

} 

return cell; 
} 
+0

テーブルビューに有効なデータソースデリゲートが渡されていることを確認してください。 – Itachi

+0

私の.hファイルにがあります。ありがとうございます.UISearchControllerには何かがありませんか?私の理解から、UITableViewControllerはすでに有効なtableDataSourceが付属しています。私が間違っていると私を修正してください。 @Itachi – waffles

+0

私はプロトコルUITableViewDataSourceを意味します... – Itachi

答えて

0

あなたは現在のビューの階層構造を理解するためにsearchcontrollerまたはresultscontrollerを追加しましたか?

+0

私は確信していますが、resultsController.tableViewが表示されていると思いますが、検索がアクティブになると空白になります。 – waffles

関連する問題