title: Xcode how to link UITableView Cells to a new View Controller
body: <p>I currently have developed a Tabbed Based Application. The first Tab is decors which displays Colour Swatches or Images in a TableView Structure. Currently when you push on a image or Colour swatch An alert pops up saying which table cell you have pushed. I instead want to link each table cell image or Colour swatch to a new view controller showing a bigger image of that image or colour swatch. A modal would also do fine</p>
  
  <p><img src="https://i.stack.imgur.com/cQWQC.png" alt="enter image description here"></p>
  
  <p><img src="https://i.stack.imgur.com/fuGhF.png" alt="enter image description here"></p>
  
  <pre><code>#import "TableViewsViewController.h"
  
  @implementation TableViewsViewController
  
  #pragma mark -
  #pragma mark Synthesizers
  
  @synthesize table;
  @synthesize sitesArray;
  @synthesize imagesArray;
  
  #pragma mark -
  #pragma mark View lifecycle
  
  // Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
  - (void)viewDidLoad {
  
  
  // Load up the sitesArray with a dummy array : sites
  NSArray *sites = [[NSArray alloc] initWithObjects:@"a", @"b", @"c", @"d", @"e", @"f", @"g", @"h", nil];
  self.sitesArray = sites;
  [sites release];
  
  UIImage *active = [UIImage imageNamed:@"a.png"];
  UIImage *ae = [UIImage imageNamed:@"b.png"];
  UIImage *audio = [UIImage imageNamed:@"c.png"];
  UIImage *mobile = [UIImage imageNamed:@"d.png"];
  UIImage *net = [UIImage imageNamed:@"e.png"];
  UIImage *photo = [UIImage imageNamed:@"f.png"];
  UIImage *psd = [UIImage imageNamed:@"g.png"];
  UIImage *vector = [UIImage imageNamed:@"h.png"];
  
  NSArray *images = [[NSArray alloc] initWithObjects: active, ae, audio, mobile, net, photo, psd, vector, nil];
  self.imagesArray = images;
  [images release];
  
  [super viewDidLoad];
  }
  
  
  #pragma mark -
  #pragma mark Table View datasource methods
  
  // Required Methods
  
  // Return the number of rows in a section
  -(NSInteger) tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section
  {
  return [sitesArray count];
  }
  
  // Returns cell to render for each row
  -(UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
  {
  static NSString *CellIdentifier = @"CellIdentifier";
  
  UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
  
  if (cell == nil) {
      cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
  }
  
  // Configure cell
  
  NSUInteger row = [indexPath row];
  
  // Sets the text for the cell
  //cell.textLabel.text = [sitesArray objectAtIndex:row];
  
  // Sets the imageview for the cell
  cell.imageView.image = [imagesArray objectAtIndex:row];
  
  // Sets the accessory for the cell
  cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
  
  // Sets the detailtext for the cell (subtitle)
  //cell.detailTextLabel.text = [NSString stringWithFormat:@"This is row: %i", row + 1];
  
  return cell;
  }
  
  // Optional
  
  // Returns the number of section in a table view
  -(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView
  {
  return 1;
  }
  
  #pragma mark -
  #pragma mark Table View delegate methods
  
  // Return the height for each cell
  -(CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
  {
  return 78;
  }
  
  // Sets the title for header in the tableview
  -(NSString *) tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
  {
  return @"Decors";
  }
  
  // Sets the title for footer
  -(NSString *) tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
  {
  return @"Decors";
  }
  
  // Sets the indentation for rows
  -(NSInteger) tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath
   {
  return 0;
  }
  
  // This method is run when the user taps the row in the tableview
  -(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
  {
  UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Tapped row!" 
                                            message:[NSString stringWithFormat:@"You tapped: %@", [sitesArray objectAtIndex:indexPath.row]]
                                            delegate:nil 
                                            cancelButtonTitle:@"Yes, I did!" 
                                            otherButtonTitles:nil];
  [alert show];
  [alert release];
  [tableView deselectRowAtIndexPath:indexPath animated:YES];
  }
  
  #pragma mark -
  #pragma mark Memory management
  
  - (void)didReceiveMemoryWarning {
  NSLog(@"Memory Warning!");
  [super didReceiveMemoryWarning];
  }
  
  - (void)viewDidUnload {
  self.table = nil;
  self.sitesArray = nil;
  self.imagesArray = nil;
  [super viewDidUnload];
  }
  
  
  - (void)dealloc {
  [table release];
  [sitesArray release];
  [imagesArray release];
  [super dealloc];
  }
  
  @end
  </code></pre>
  
  <p>Part where the Alert is </p>
  
  <pre><code>// This method is run when the user taps the row in the tableview
  -(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
  {
  UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Tapped row!" 
                                            message:[NSString stringWithFormat:@"You tapped: %@", [sitesArray objectAtIndex:indexPath.row]]
                                            delegate:nil 
                                            cancelButtonTitle:@"Yes, I did!" 
                                            otherButtonTitles:nil];
  [alert show];
  [alert release];
  [tableView deselectRowAtIndexPath:indexPath animated:YES];
  }
  </code></pre>