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