sending reload data from custom tableview cell?

天大地大妈咪最大 提交于 2019-11-30 22:15:19

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];
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!