- 我正在使用 JASidePanel - https://github.com/gotosleep/JASidePanels来创建菜单效果。
- 我正在使用xib。
- 我的类扩展了 UIViewController。
- 我不知道如何向另一个 tableView 显示
searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText:
- 您会看到第一个 tableView 是一个 Panel,过滤后的一个是带有名称的 Thumb。
- 以下代码在需要添加第二个 tableview 时停止。
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;
}