0

I am trying to implement a SearchDisplayController to a tableView.

When I create my tableview everything it is ok. I have got a UiViewController with Delegate of UitableViewController.

This is my .h

    #import <UIKit/UIKit.h>
#import "AppDelegate.h"
@interface getClientsViewController : UIViewController <UITableViewDelegate,UITableViewDataSource> {
    IBOutlet UIView *vistaClientes;
    IBOutlet UIView *menu;
    IBOutlet UITableView *tablita;
}

@property(nonatomic, retain) AppDelegate *app;
@property(nonatomic, retain) NSMutableDictionary *clientList;
@property(nonatomic, retain) IBOutlet UIView *vistaClientes;
@property(nonatomic, retain) IBOutlet UIView *menu;
@property(nonatomic, retain) NSString *menuPos;
@property(nonatomic, retain) IBOutlet UITableView *tablita;

-(IBAction)showMenu:(id)sender;
@end

And this is on my .m

#import "getClientsViewController.h"
#import "checkInternet.h"
#import "AccessLogin.h"
#import "ClientesCell.h"
#import "menuGlobalViewController.h"
#import "getOrdenesViewController.h"
#import "InterfaceGLobal.h"

@interface getClientsViewController ()

@end
@implementation getClientsViewController {
    NSArray *recipes;
    NSArray *searchResults;
}
@synthesize app,clientList,vistaClientes,menuPos,menu,tablita;


- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{

    NSArray *cliente = [NSArray arrayWithArray:[clientList objectForKey:@"clients"]];

    NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"nickname contains[c] %@ OR clientNumber contains[c] %@",searchText, searchText];
    searchResults = [cliente filteredArrayUsingPredicate:resultPredicate];
}

-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString
{
    [self filterContentForSearchText:searchString
                               scope:[[self.searchDisplayController.searchBar scopeButtonTitles]
                                      objectAtIndex:[self.searchDisplayController.searchBar
                                                     selectedScopeButtonIndex]]];

    return YES;
}

#pragma mark - Table view data source

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    if (tableView == self.searchDisplayController.searchResultsTableView) {

        return [searchResults count];

    } else {
    return [[clientList objectForKey:@"clients"] count];
    }
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {


    static NSString *CellIdentifier = @"ClienteCelda";
    ClientesCell *cell = (ClientesCell *)[self.tablita dequeueReusableCellWithIdentifier:CellIdentifier];

        if (cell == nil) {
            NSLog(@"Im in");
            cell = [[ClientesCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
        }




    NSArray *cliente = [NSArray array];
    if (tableView == self.searchDisplayController.searchResultsTableView) {
       cliente = [NSArray arrayWithArray:searchResults];
    } else {
        cliente = [NSArray arrayWithArray:[clientList objectForKey:@"clients"]];
    }


    [cell.Direccion setText:[[cliente objectAtIndex:indexPath.row] objectForKey:@"address1"]];

    [cell.nombreCliente setText:[[cliente objectAtIndex:indexPath.row] objectForKey:@"name"]];
    [cell.nombreCorto setText:[[cliente objectAtIndex:indexPath.row] objectForKey:@"nickname"]];
    [cell.imagen setImage:[UIImage imageNamed:@"avatar.png"]];

    NSLog(@"cellda: %@",[[cliente objectAtIndex:indexPath.row] objectForKey:@"address1"]);

    return cell;
}

I quite some methods, just for make more visible the code.

When the view load, is showing correctly the results, but when I type some search, return empty cells with default style.

I know, when I search, the if(cell==nil) is true, but is not loading correctly the style.

Someone can help me?

Here are two screen shots will help explain:

enter image description here

enter image description here

Martin Evans
  • 45,791
  • 17
  • 81
  • 97
EliasConx
  • 3
  • 3

0 Answers0