views:

41

answers:

1

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

+2  A: 

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.

audience
so far the only thing i'm not clear on is where you say: make sure you r tableviewcontroller implements your custom tablecell delegate.
Brodie
disregard i got it, thank you
Brodie