iPhone open multiple view controllers on table view item click
ios, iphone, objective-c, tableview
Solution
First set Storyboard IDs for your Next View controllers in Interface Builder and then.
-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// Check Row and Select Next View controller
if (indexPath.row == 1)
{
// Push Selected View
UIViewController *view1 = [self.storyboard instantiateViewControllerWithIdentifier:@"StoryboardID"];
[self.navigationController pushViewController:view1 animated:YES];
}
}
Problem
Is it possible to open different view controllers depending on witch table view cell user clicks? I tried to do that with: ``` [self presentViewController:obj animated:YES completion:nil]; ``` but when next view is presented, there is no navigation bar and I can't go back to table view. EDIT: Here is MasterViewController class that I am using ``` #import "MasterViewController.h" @interface MasterViewController () { NSArray *viewArray; } @end @implementation MasterViewController @synthesize items,itemImges; - (void)awakeFromNib { if ([[[UIDevice currentDevice] systemVersion] compare:@"7" options:NSNumericSearch] != NSOrderedAscending) { self.preferredContentSize = CGSizeMake(320.0, 480.0); } if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) { self.clearsSelectionOnViewWillAppear = NO; } self.title = NSLocalizedString(@"MasterTitle",@"Options:"); [super awakeFromNib]; } - (void)viewDidLoad { [super viewDidLoad]; items = [NSArray arrayWithObjects:@"Media Explorer",@"Live TV",@"Settings",nil]; itemImges = [NSArray arrayWithObjects: [UIImage imageNamed:@"listicon_guide.png"], [UIImage imageNamed:@"listicon_livetv.png"], [UIImage imageNamed:@"listicon_settings.png"], nil]; // Do any additional setup after loading the view, typically from a nib. self.detailViewController = (DetailViewController *)[[self.splitViewController.viewControllers lastObject] topViewController]; MediaExpDetailViewController *DVCA = [self.storyboard instantiateViewControllerWithIdentifier:@"MediaExpDetailViewController"]; LiveTVDetailViewController *DVCB = [self.storyboard instantiateViewControllerWithIdentifier:@"LiveTVDetailViewController"]; SettingsDetailViewController *DVCC = [self.storyboard instantiateViewControllerWithIdentifier:@"SettingsDetailViewController"]; //Create Array of views viewArray = [NSArray arrayWithObjects:DVCA, DVCB, DVCC, nil]; } #pragma mark - Table View - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return items.count; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath]; NSString *object = items[indexPath.row]; UIImage *image = itemImges[indexPath.row]; cell.textLabel.text = [object description]; cell.imageView.image = image; return cell; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { //for iPad if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) { //something goes here } else { //for iPhone UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main_iPhone" bundle:nil]; MediaExpDetailViewController *objSynergy = (MediaExpDetailViewController *)[mainStoryboard instantiateViewControllerWithIdentifier:@"MediaExpDetailViewController"]; [self.navigationController pushViewController:objSynergy animated:YES]; } } - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { } @end ```