sending reload data from custom tableview cell?

霸气de小男生 提交于 2019-11-30 05:47:55

问题


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


回答1:


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.




回答2:


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];


来源:https://stackoverflow.com/questions/3581259/sending-reload-data-from-custom-tableview-cell

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