UITableViewController setting delegates and datasource
- by the_great_monkey
Hi iOS gurus, I'm a little bit confused about UITableViewController... As far as I concern they are typically the delegate and datasource of the UITableView (although it can be made such that they are different).
However in some cases, like when embedding a UITableViewController in a UITabBarViewController in Interface Builder, we initiate our table view controller in IB. Therefore in my understanding, the default initialiser is being called.
But in this case, I have this piece of code:
@interface Settings : UITableViewController {
}
And in the IB I see that the delegate and datasource of the UITableView is hooked up to this class. My question is, why is it that we don't need to explicitly say that it is following:
@interface Settings : UITableViewController <UITableViewDelegate, UITableViewDataSource>
{
}
And in the .m file:
- (void)viewDidLoad {
[super viewDidLoad];
[tableView setDelegate:self];
[tableView setDataSource:self];
}
I have indeed stumbled upon some cases where I have to explicitly code the above a few times to make something work. Although it is still a mystery for me as of why it is needed...