1.prepareForSegue:
Now we know what the destinationViewController is we can set its data properties. To receive information back from a scene we use
delegation. Both are shown simply in the following code snipped.
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ if([[segue identifier] isEqualToString:@"ContactsViewControllerSegue"]){ ContactsViewController *cvc = (ContactsViewController *)[segue destinationViewController]; cvc.contacts = self.contacts; cvc.delegate = self; } } |
A final note about UIStoryboardSegue is that when you choose a popover transition you must get access to the popover in order to dismiss it. You can get this by casting the Segue to a UIStoryboardPopoverSegue but only after you have checked the identity of
the Segue to ensure you are making the correct cast.
2.UITableViewCell:
static NSString *CellIdentifier = @"ContactsCell"; ContactsTableViewCell *cell = (ContactsTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; cell.contact = [contacts objectAtIndex:indexPath.row]; |
Note: That you can have as many different prototype cells as you wish the only requirement is that you set each one with a unique cell identifier.
It is also possible to create Segues between cells and ViewControllers to transition to a new scene when a cell is tapped. In the following screen shot you can see how to connect a cell to a UIViewController and by specifying Push as the transition mode we
now have a detailed view pushed on whenever a cell is tapped.
3.UIViewController:
UIStoryboard is a runtime representation of everything configured inside Interface Builder as such any individual scene can be loaded using either,
[UIStoryboard instantiateInitalViewController] [UIStoryboard InstantiateViewControllerWithIdentifier]
Should you choose to split your application across multiple Storyboards these can be loaded using,
[UIStoryboard storyboardWithName:bundle:]