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

在此处输入图像描述在此处输入图像描述

4

1 回答 1

0

不知道你是否解决了这个问题,但你是什么意思显示到另一个表视图?如果您的意思是它显示与您发布的第二张图片相似,那么我会继续说如果您使用“搜索栏和搜索显示”,搜索栏应该已经有一个?

self.searchDisplayController.searchResultsTableView

如果您确实使用了该搜索栏和显示,您可以拥有 NSPredicate 并制作一个过滤器可变数组,该数组复制并从您的 originalTableViewData 进行谓词。希望这可以帮助您或其他任何仍然感兴趣的人。

于 2013-09-11T23:03:02.877 回答