3.2. Assigning a Delegate to a Table View

Problem

You have decided to assign a delegate to a table view.

Solution

Assign an object that conforms to the UITableViewDelegate protocol to the delegate property of your table view:

- (void)viewDidLoad{
  [super viewDidLoad];
  
  /* We want a full-screen Table View which is as
   big as the View attached to the current
   View Controller */
  CGRect tableViewFrame = self.view.bounds;
  
  self.myTableView = [[UITableView alloc]
                      initWithFrame:tableViewFrame
                      style:UITableViewStylePlain];
  
  self.myTableView.delegate = self;
  
  /* Add this Table View to our View */
  [self.view addSubview:self.myTableView];
  
}

This code assigns the current object as the delegate of the table view. myTableView is a property of type UITableView belonging to the calling view controller. The statement is embedded in the viewDidLoad method, because the calling object here is an instance of UIViewController, and this method is the right place to put the statement so that the association is made just once.

Discussion

The UITableView class defines a property called delegate. The table view should assign to this property an object that conforms to the UITableViewDelegate protocol. In other words, this delegate must promise to reply to the messages defined in this protocol, which are sent to the delegate object by the table view itself. Think of the delegate of a table view as an object that listens to various events sent by the table view, such as when a cell is selected or when the table view wants ...

Get iOS 5 Programming Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.