You can add a new class with tableView data source. initiate it with nesessary data (from both View controllers. use delegate to cooperate them) and after anu data chaging call [tableView setDataSource:]:
//  DataSourceAtoZ.h
#import <Foundation/Foundation.h>
#import "MallsViewController.h"
@interface DataSourceCategory : NSObject <UITableViewDataSource> {
     NSMutableArray *data;
    UITableView *tableView;
}
@property (nonatomic, retain) NSMutableArray *data;
- (id)initWithData:(NSMutableArray *)d;
@end
then, anywhere in your code, compose data you wish to be in tableView and set dataSource:
NSMutableArray *dt = [[NSMutableArray alloc] init];
                for (int i = 0; i < [categories count]; i++) {
                    NSMutableArray *names = [[NSMutableArray alloc] init];
                    [names addObject:[[categories objectAtIndex:i] objectAtIndex:0]];
                    for (int j = 1; j < [[categories objectAtIndex:i] count]; j++) {
                        NSRange match = [[[categories objectAtIndex:i] objectAtIndex:j] rangeOfString:[params objectAtIndex:0]];
                        if (match.length != 0) {
                            [names addObject:[[categories objectAtIndex:i] objectAtIndex:j]];
                        }
                    }
                    [dt addObject:names];
                    [names release];
                }
                dsCategory = [[DataSourceCategory alloc] init];
                dsCategory = [dsCategory initWithData:dt];
                [dt release];