Using this post, I am going to explain “working with multiple data-sources in UITableView”.
Expected Output of this tutorial is demonstrated by following images.
Step 1 : load data into your arrays ( if you are fetching from xml/web do that, I have implemented static here )
- (void)viewDidLoad
{
[super viewDidLoad];
self.arOne=[NSArray arrayWithObjects:@"Sagar",@"Amit",@"Nimit",@"Paresh",@"Rakesh",@"Yogesh", nil];
self.arTwo=[NSArray arrayWithObjects:@"Supreeth",@"Deepthy",@"Ankit",@"Sandeep",@"Gomathy", nil];
[self.tableView reloadData];
}
{
[super viewDidLoad];
self.arOne=[NSArray arrayWithObjects:@"Sagar",@"Amit",@"Nimit",@"Paresh",@"Rakesh",@"Yogesh", nil];
self.arTwo=[NSArray arrayWithObjects:@"Supreeth",@"Deepthy",@"Ankit",@"Sandeep",@"Gomathy", nil];
[self.tableView reloadData];
}
Step 2 : Implement coding in such a way that handles multiple data-sources. It means place conditional coding as following example
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
cell.textLabel.text=[(self.btnTapped.selected)?self.arTwo:self.arOne objectAtIndex:indexPath.row];
return cell;
}
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
cell.textLabel.text=[(self.btnTapped.selected)?self.arTwo:self.arOne objectAtIndex:indexPath.row];
return cell;
}
Step 3 : Add a connection to your button or whatever control that you are using.
- (IBAction)btnTitle:(id)sender {
self.btnTapped.selected = !self.btnTapped.selected;
[self.tableView reloadData];
}
- (IBAction)btnTitle:(id)sender {
self.btnTapped.selected = !self.btnTapped.selected;
[self.tableView reloadData];
}