質問

あるビューから別のビューに通知を送信しています。私の問題は、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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top