検索テーブルが空ですが、新しいアレイが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;
}
テーブルビューに有効なデータソースデリゲートが渡されていることを確認してください。 – Itachi
私の.hファイルにがあります。ありがとうございます.UISearchControllerには何かがありませんか?私の理解から、UITableViewControllerはすでに有効なtableDataSourceが付属しています。私が間違っていると私を修正してください。 @Itachi –
waffles
私はプロトコルUITableViewDataSourceを意味します... – Itachi