How would I go about sending a reloadData message to the tableView from a custom tableViewCell?
reloadData()Reloads the rows and sections of the table view.
The easiest way to implement that is to use Delegates.
Define a protocol in your CustomTableCell.h like this:
@protocol CustomTableCellDelegate <NSObject>
@required
- (void)reloadMyTable;
@end
The next step is to provide a delegate var:
@interface CustomTableCell : UITableViewCell {
id<CustomTableCellDelegate> delegate;
}
@property (assign) id<CustomTableCellDelegate> delegate;
Make shure you synthesize your delegate-Variable in the CustomTableCell.m.
Now you have a Delegate Defined. There are three remaining steps:
When you create your cell you have to set the delegate for this cell like
cell.delegate = self;
Make shure your TableViewController implements your CustomTableCellDelegate. If you do this you will be forced to implement the - (void)reloadMyTable in your TableViewController:
- (void)reloadMyTable {
[self.tableView reloadData];
}
The last step is to call this method from your CustomTableCell like this:
if (self.delegate != NULL && [self.delegate respondsToSelector:@selector(reloadMyTable)]) {
[delegate reloadMyTable];
}
More about Delegation here.
In short: You define a protocol in your CustomTableViewCell, which is implemented by the TableViewController. If you send a method-message to your delegate, this message will be send to your TableViewController.
The best way it's create notification. In your tableView you must create it. It's very easy, something like this:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(reloadTableView:)
name:@"reloadTable"
object:nil];
Then you must create method:
- (void)reloadTableView:(NSNotification *)notif {
[self.yourTableName reloadData];
}
and don't forget delete notification:
-(void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"reloadTable" object:nil];
}
and in your custom tableViewCell when you want reload table you need:
[[NSNotificationCenter defaultCenter] postNotificationName:@"reloadTable"
object:nil];
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