开发者

sending reload data from custom tableview cell?

开发者 https://www.devze.com 2023-01-13 21:21 出处:网络
开发者_运维知识库How would I go about sending a reloadData message to the tableView from a custom tableViewCell?The easiest way to implement that is to use Delegates.

开发者_运维知识库How would I go about sending a reloadData message to the tableView from a custom tableViewCell?


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

精彩评论

暂无评论...
验证码 换一张
取 消