Search code examples
iphoneuitableviewreloaddata

sending reload data from custom tableview cell?


How would I go about sending a reloadData message to the tableView from a custom tableViewCell?


Solution

  • 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.