0
我有TableViewController
带有命名的类:messageTableViewController
AND定制TableViewcell
在tableViewController上,但它自己的类名为:messageTableViewCell
。 (在同一个故事板中) messageTableViewCell
包含名为nom,titre,resume和date的4个标签。带有4个标签的tableView中的搜索栏
我想在messageTableViewController中实现一个搜索栏。为此,将一个SearchBarandSearchDisplayController拖放到messageTableViewController的顶部。和我的代码是:
在.H
@property (nonatomic, copy) NSArray *unreadmessagesArray;
@property (nonatomic, strong) IBOutlet UISearchBar *searchBar;
@property(nonatomic, strong) NSMutableArray *results;
在.M
- (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];
}
}
当我做了搜索,没有什么是显示! 任何错误的想法? 谢谢
它显示您的数据只是没有搜索?或者从不显示数据?因为我没有看到任何cellIdentifier,所以这就是为什么我问。 – Mayo323 2014-10-08 15:17:14
我发现了这个错误,谢谢 – lyn87 2014-10-08 17:13:27
我在程序中将上面的cellidentifier标识为静态字符串,但没有显示出来。谢谢 – lyn87 2014-10-08 20:50:16