5

カスタムtableViewCellからtableViewにreloadDataメッセージを送信するにはどうすればよいですか?

4

2 に答える 2

10

これを実装する最も簡単な方法は、デリゲートを使用することです。

CustomTableCell.hで次のようにプロトコルを定義します。

@protocol CustomTableCellDelegate <NSObject>
@required
- (void)reloadMyTable;
@end

次のステップは、デリゲート変数を提供することです。

@interface CustomTableCell : UITableViewCell {
    id<CustomTableCellDelegate> delegate;
}

@property (assign) id<CustomTableCellDelegate> delegate;

デリゲートを合成することを忘れないでください-CustomTableCell.mの変数。

これで、デリゲートが定義されました。残りの3つのステップがあります。

セルを作成するときは、このセルのデリゲートを次のように設定する必要があります。

cell.delegate = self;

TableViewControllerがCustomTableCellDelegateを実装していることを確認してください。これを行うと、TableViewControllerに-(void)reloadMyTableを実装する必要があります。

- (void)reloadMyTable {
    [self.tableView reloadData];
}

最後のステップは、次のようにCustomTableCellからこのメソッドを呼び出すことです。

if (self.delegate != NULL && [self.delegate respondsToSelector:@selector(reloadMyTable)]) {
     [delegate reloadMyTable];
}

委任について詳しくは、こちらをご覧ください。

つまり、TableViewControllerによって実装されるCustomTableViewCellでプロトコルを定義します。メソッドメッセージをデリゲートに送信すると、このメッセージはTableViewControllerに送信されます。

于 2010-08-27T05:12:48.750 に答える
2

通知を作成する最良の方法。tableViewで作成する必要があります。とても簡単です。次のようなものです。

[[NSNotificationCenter defaultCenter] addObserver:self 
                                     selector:@selector(reloadTableView:)
                                         name:@"reloadTable"
                                       object:nil];

次に、メソッドを作成する必要があります。

- (void)reloadTableView:(NSNotification *)notif {
        [self.yourTableName reloadData];

}

削除通知を忘れないでください:

-(void)dealloc {
     [[NSNotificationCenter defaultCenter] removeObserver:self name:@"reloadTable"       object:nil];

}

また、カスタムtableViewCellで、必要なテーブルをリロードする場合は、次のようにします。

[[NSNotificationCenter defaultCenter] postNotificationName:@"reloadTable" 
                                                object:nil];
于 2014-06-27T09:18:43.950 に答える