I have the following:
I used a .xib file for the cell, which is a CustomCell
subclass. This custom cell handles IBActions for some touch events on the cell's buttons.
I'd like to reference the ViewController and some of its variables from the cell.
How am I supposed to access the UITableViewController from the UITableViewCell class?
I wouldn't create this kind of dependency between the cell and the view controller - that makes the architecture more intricate and the cell not reusable.
I suggest you to use the delegation pattern, which may sound a little complicated - although you're already using (UITableViewDelegate
is a typical example):
MyCellProtocol
with one method didTapCell
, accepting a UITableViewCell
and/or some custom data you want to pass to the view controllerweak var cellDelegate: MyCellProtocol?
didTapXXX
handler or didSelectRowAtIndexPath
of your cell, call self.cellDelegate?.didTapCell()
, passing the expected parametersMyCellProtocol
cellForRowAtIndexPath
of your view controller, when creating/dequeuing the cell, set its cellDelegate
property to self
At this point, when a tap is done in your cell, the didTapCell
method of the view controller is called, and from there you can do whatever you need to achieve.
The key point is: rather than making the cell handle the cell tap/selection, notify the view controller and let it do the job.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With