Your UITableView can have a backgroundView. Set it to be a UIImageView, and set it's frame to the table view's bounds. This code is untested, but should give you an idea.
UIImage * img = [UIImage imageNamed:@"myImage.jpg"];
UIImageView * imgView = [UIImageView initWithImage:img];
imgView.frame = myTableView.bounds;
myTableView.backgroundView = imgView;
EDIT: The above will produce a background like world clock. to make it show below the other cells as a cell, change your data source:
- numberOfRowsInSection:section:
should return one more than before.
- tableView:canEditRowAtIndexPath:
and tableView:canMoveRowAtIndexPath:
should return NO
for this new cell.
- (UITableViewCell *)tableView:cellForRowAtIndexPath:
needs to create the new cell when the it is asked for, so if you have 5 data cells, the 6th will return:
UITableViewCell * cell = //create your cell
//change the height to match the remaining space
UIImage * img = [UIImage imageNamed:@"myImage.jpg"];
UIImageView * imgView = [UIImageView initWithImage:img];
cell.backgroundView = imgView;
I am not sure if you have to set the image view size, but you do have to set the cell size to take up the remaining space, with something like this in your table view delegate's tableView:heightForRowAtIndexPath:
for the final row:
//if final row
return myTableView.bounds.size.height - 16.0 * myData.count; //modify from the default 16.0 as needed.