reloadRowsAtIndexPaths
を呼び出すたびに; didEndDisplayingCell
メソッドが2回呼び出されます。なぜこうなった?iOS:reloadRowsAtIndexPathsを呼び出すと、didEndDisplayingCellが2回呼び出されます
私はUITableViewDelegateとUITableViewDataSourceのデリゲートメソッド次実装しました:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
- (void)tableView:(UITableView *)tableView didEndDisplayingCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath*)indexPath
didEndDisplayingCell
を実装したのは、Firebaseリスナーを切り離したいからです。ここで
は、私は、セルが更新されたデータに耳を傾けたび、それはtableViewCellをリロードするのViewControllerのメソッドを起動didEndDisplayingCell
- (void)tableView:(UITableView *)tableView didEndDisplayingCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath*)indexPath{
// detach the listener for the cell at path index indexPath
CustomCell* customCell = (CustomCell*)(cell);
[customCell detachListener];
}
内部に実装するものです。
numberOfRowsInSection
cellForRowAtIndexPath
didEndDisplayingCell
didEndDisplayingCell
:このメソッドはのUITableViewのデリゲートメソッドは次の順序どおりに呼ばれて実行されると
-(void)refreshCellWithIndexPath:(NSIndexPath*) indexPath andData:(CustomData*)data{
[self.dataArray replaceObjectAtIndex:indexPath.row withObject:data];
[self.tableView beginUpdates];
[self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
[self.tableView endUpdates];
}
:ここで私は、そのメソッドを実装する方法です
なぜdidEndDisplayingCell
メソッドが2回目に呼び出されますか?これを手伝ってください。
理由/液に '' didEndDisplayingCell'に重複通話用indexPath' ... *かもしれない*ヘルプポイントの値を見るのは興味深いだろう。 – DonMag
@DonMag、迅速な対応に感謝します。 'didEndDisplayingCell'への重複呼び出しの' indexPath'は同じです。 –
Hmmm ... indexPathは意味がありますか?セル*が削除されるべきであるように見えますか? – DonMag