I think I fully understand the concept of delegation, my question is that when we do:
class someViewController : UIViewController, UITableViewDelegate{
}
would it ever be possible that we wouldn't want to set tableView.delegate
to self
?
If there isn't any chance then why is Xcode forcing us to do some extra work here?
If there is a chance that tableView.delegate
is set to something other than self
...well what is that? Can you please provide some examples?
When mentioning that
tableView.delegate = self
ortableView.dataSource = self
in the desired ViewController, that's means the ViewController is saying "I am responsible for implementing those delegation/dataSource methods", means that this ViewController (self
) is taking care of providing the needed method to let tableView knows how it should looks/behaves.Referring to your questions:
Actually it's possible, but this causes to let the tableView appears as an empty tableView (no rows in it), because no one is telling it about how it should looks/behave.
Yes you can, tableView.dataSource/delegate not necessary to be assigned to the same Viewcontroller that contains this tableView (but I find it more readable and understandable).
For example:
In the following code snippets, I assigning the dataSource of the tableView to another separated class (which is not even a UIViewController) on a different .swift file and it completely works fine:
Handler Class:
The output works fine as it should.