Uitableview 具有4个标签的tableView中的搜索栏

Uitableview 具有4个标签的tableView中的搜索栏,uitableview,Uitableview,我在TableViewController上有名为:messageTableViewController的TableViewController和自定义的TableViewcell,但它自己的类名为:messageTableViewCell。(在同一情节提要中) messageTableViewCell包含4个标签,分别命名为:nom、titre、resume和date 我想在messageTableViewController中实现一个搜索栏。为此,将SearchBarandSearchDis

我在TableViewController上有名为:
messageTableViewController
TableViewController
和自定义的
TableViewcell
,但它自己的类名为:
messageTableViewCell
。(在同一情节提要中)
messageTableViewCell
包含4个标签,分别命名为:nom、titre、resume和date

我想在messageTableViewController中实现一个搜索栏。为此,将SearchBarandSearchDisplayController拖到messageTableViewController的顶部。我的代码是:

In.h

@property (nonatomic, copy) NSArray *unreadmessagesArray;
@property (nonatomic, strong) IBOutlet UISearchBar *searchBar;
@property(nonatomic, strong) NSMutableArray *results;
英寸

当我进行搜索时,没有显示任何内容! 你知道这个错误吗? 谢谢

我发现了问题! 我不知道NSPredicte做什么。。。 我通过我的数据中的某些东西改变了自己,它起作用了。。。 因此,如果我根据我的应用程序中的de message发件人的姓名进行搜索,我只需按姓名更改SELF。
无论如何谢谢

它只显示您的数据而不进行搜索?或者从不显示数据?因为我没有看到任何cellIdentifier,所以我问。我发现了错误,谢谢。我在我的程序中将上面的cellIdentifier标识为静态字符串,我没有显示它。谢谢,没问题。。投你一票:)
- (NSMutableArray *)results
{
    if (!_results) {
        _results = [[NSMutableArray alloc] init];
    }

    return _results;
}


- (void)searchThroughData
{
    self.results = nil;

    NSPredicate *resultsPredicate = [NSPredicate predicateWithFormat:@"SELF contains [search] %@", self.searchBar.text];
    self.results = [[self.unreadmessagesArray filteredArrayUsingPredicate:resultsPredicate] mutableCopy];
}

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
    [self searchThroughData];

}

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    // Return the number of sections.
    return 1;
}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if (tableView == self.tableView) {
        if(self.unreadmessagesArray == nil)
            return 0;

        return [self.unreadmessagesArray count];
    } else {
        [self searchThroughData];
        return self.results.count;
    }

}

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

// Configure Cell

 messageTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellidentifier forIndexPath:indexPath];

if (!cell) {
    cell = [[messageTableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellidentifier];
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}

if (tableView == self.searchDisplayController.searchResultsTableView) {

    NSDictionary *reloadedMessage = [self.results objectAtIndex:indexPath.row];

    cell.nom.text = [reloadedMessage valueForKey:@"sentBy"];
    cell.titre.text = [reloadedMessage valueForKey:@"messageThreadTitle"];
    cell.resume.text = [reloadedMessage valueForKey:@"messageBody"];
    cell.date.text = [reloadedMessage valueForKey:@"sentOn"];
} else {


    NSDictionary *currentMessage = [self.unreadmessagesArray objectAtIndex:indexPath.row];

    cell.nom.text = [currentMessage valueForKey:@"sentBy"];
    cell.titre.text = [currentMessage valueForKey:@"messageThreadTitle"];
    cell.resume.text = [currentMessage valueForKey:@"messageBody"];
    cell.date.text = [currentMessage valueForKey:@"sentOn"];

    }
return cell;

}


- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
    return NO;
}

- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
    return NO;
}



-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    if (self.searchDisplayController.isActive) {
        [self performSegueWithIdentifier:@"detailMessage" sender:self];
    }

}