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