searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText:
SidePanelViewController.h
@interface SidePanelViewController : UIViewController <UISearchBarDelegate, UISearchDisplayDelegate, UITableViewDataSource, UITableViewDelegate, MFMailComposeViewControllerDelegate, MFMessageComposeViewControllerDelegate>
{
IBOutlet UIImageView *_photoProfile;
IBOutlet UILabel *_nameLabel;
NSArray *_menuArray;
}
@property (nonatomic, readonly) IBOutlet UISearchBar *searchBar;
@property (nonatomic, strong) IBOutlet UITableView *tableView;
@property(nonatomic, strong) NSMutableArray *tableViewData;
@property(nonatomic, strong) NSMutableArray *originalTableViewData;
@property(nonatomic, strong) NSMutableArray *searchArray;
@property(nonatomic, strong) NSMutableDictionary *units;
SidePanelViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
_menuArray = [[NSArray alloc]initWithObjects:@"Home",@"Meu QR Sem Hora", @"Favoritas", @"Minha Pontuação", @"Minha Conta",@"Convidar Amigos", @"Ajuda", @"Fale Conosco",@"Privacidade e Termos", nil];
_tableViewData = [[NSMutableArray alloc] initWithArray:_menuArray];
// Don't show the scope bar or cancel button until editing begins
[_searchBar setShowsScopeBar:NO];
[_searchBar sizeToFit];
//
// Create a header view. Wrap it in a container to allow us to position
// it better.
//
UIView *containerView =
[[UIView alloc]
initWithFrame:CGRectMake(0, 0, 320, 30)];
UILabel *headerLabel =
[[UILabel alloc]
initWithFrame:CGRectMake(0, 0, 320, 30)];
headerLabel.text = NSLocalizedString(@"Perfil", @"");
headerLabel.textColor = [UIColor blackColor];
headerLabel.shadowColor = [UIColor whiteColor];
headerLabel.shadowOffset = CGSizeMake(0, 1);
headerLabel.font = [UIFont boldSystemFontOfSize:22];
headerLabel.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.5];
[containerView addSubview:headerLabel];
self.tableView.tableHeaderView = containerView;
//SetName and Picture
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
_nameLabel.text = [defaults valueForKey:@"name"];
_photoProfile.image = [UIImage imageWithData:[defaults objectForKey:@"Photo"]];
}
- (void)viewWillAppear:(BOOL)animated
{
[_tableView reloadData];
}
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
[self filterContentForSearchText:searchText];
}
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
[self.sidePanelController setCenterPanelHidden:YES animated:YES duration:0.2f];
}
- (void)searchBarCancelButtonClicked:(UISearchBar *) searchBar
{
[self.sidePanelController setCenterPanelHidden:NO animated:YES duration:0.2f];
searchBar.text = @"";
_tableViewData = [_originalTableViewData mutableCopy];
[_tableView reloadData];
[searchBar resignFirstResponder];
}
- (void) searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller
{
[self.sidePanelController setCenterPanelHidden:NO animated:YES duration:0.2f];
}
#pragma mark - ScrollView (UITableView) delegate methods
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
[_searchBar resignFirstResponder];
[self performSelector:@selector(enableCancelButton:) withObject:self.searchBar afterDelay:0.0];
}
// Used to re-enabled the cancel button when a user starts scrolling
- (void)enableCancelButton:(UISearchBar *)aSearchBar {
for (id subview in [aSearchBar subviews]) {
if ([subview isKindOfClass:[UIButton class]]) {
[subview setEnabled:TRUE];
}
}
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)filterContentForSearchText:(NSString *)searchText {
if (searchText && searchText.length) {
[_tableViewData removeAllObjects];
for (NSDictionary *dictionary in _originalTableViewData)
{
for (NSString *thisKey in [dictionary allKeys]) {
if ([thisKey isEqualToString:@"SearchKey1"] ||
[thisKey isEqualToString:@"SearchKey2"] ) {
if ([[dictionary valueForKey:thisKey] rangeOfString:searchText
options:NSCaseInsensitiveSearch].location != NSNotFound) {
[_tableViewData addObject:dictionary];
} // for (NSString *thisKey in allKeys)
} // if ([thisKey isEqualToString:@"SearchKey1"] || ...
} // for (NSString *thisKey in [dictionary allKeys])
} // for (NSDictionary *dictionary in originalTableViewData)
[_tableView reloadData];
} // if (query && query.length)
}
#pragma mark - UITableViewDelegate
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return _menuArray.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIndentifier = @"CustomMenu";
CustomMenuCell *cell = (CustomMenuCell *) [_tableView dequeueReusableCellWithIdentifier:cellIndentifier];
if(!cell){
cell = (CustomMenuCell *) [[[NSBundle mainBundle] loadNibNamed:@"CustomMenuView" owner:nil options:nil] objectAtIndex:0];
}
NSString *tempString = [_menuArray objectAtIndex:indexPath.row];
[cell configureMenu:tempString];
cell.selectionStyle = UITableViewCellSelectionStyleGray;
return cell;
}
Don't know if you solved this or not, but what do you mean show to another table view? If you mean that it shows similar to the second image you posted, then I'm gonna go ahead and say that the search bar should already have one if youre using "Search Bar and Search Display"?
self.searchDisplayController.searchResultsTableView
If you did use that Search Bar and Display, you can have NSPredicate and make a filter mutable array that copies and is predicated from your originalTableViewData. Hopefully this helps your or anyone else that is still interested.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.