nsnotifcationと非同期ダウンロードを手伝ってください
-
13-10-2019 - |
質問
あるビューから別のビューに通知を送信しています。私の問題は、TableViewがスクロールしているときにのみCellForrotIndexpathメソッドで呼び出しているという見解の通知が送信されることです。画像がダウンロードされたら、これを停止して通知を送信するにはどうすればよいですか?これが私のコードです: https://gist.github.com/756302
ありがとう
mkdev
解決
私があなたのコードを理解する限り、メッセージはテーブル全体のリロードをトリガーします。それはセルのリフレッシュにつながるはずです。
したがって、リロードが仕上げのメッセージからトリガーされたためにセルが描画されている場合(および画像が表示されるようになりました)、または画像の非同期ダウンロードを開始する必要がある場合は、76行目をチェックする必要があります。 。
これをチェックするために私の頭に浮かぶ最初のことは、ReloAdtableViewにプロパティを設定することです。
- (void)reloadTableView
{
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"aaa"];
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"name" object:nil];
NSLog(@"removeobserver");
loadImageFinished = YES;
// if your table has several sections you'll need to adopt the section number
NSIndexSet *indices = [[NSIndexSet alloc] initWithIndex:0];
[self.tableView reloadSections:indices withRowAnimation:UITableViewRowAnimationFade];
[indices release];
}
そして、追加する
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
...
if (loadImageFinished) {
...
} else {
[asyncImage loadImageFromURL:[NSURL URLWithString:pathImage]];
}
...
}
テーブルがリロードされている他の理由がある可能性があることに注意してください - ビューが消えたり降ろされたりした可能性があり、アニンクロナスの負荷を数回トリガーしたくないかもしれません。
他のヒント
コードは正しく機能するはずです connectionDidFinishLoading
, 、あなたはそれを呼びます NSNotificationCenter
通知を送信するには、ポストメソッドはありません cellForRowAtIndexPath
所属していません StackOverflow