0

ViewControllerに次のコードがあります

if (FBSession.activeSession.isOpen) {
    [[FBRequest requestForMe] startWithCompletionHandler:
     ^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *user, NSError *error) {
         if (!error) {
             self.nameString = user.name;
             self.profileImage.profileID = [user objectForKey:@"id"];
             [self.tableView reloadData];
         }
     }];
}

そして、私は2つの問題を経験しています。1つは、プロファイル画像が取得および表示されないことです。2つ目は[self.tableView reloadData]、名前を表示するために必要なことです。これは醜い遅れを引き起こします。両方を修正するにはどうすればよいですか?

4

1 に答える 1

1

プロフィール画像が取得されない理由はわかりませんが、一部のプロフィール画像が表示されないという問題があり、ここにあるFBProfilePictureViewの修正バージョンを作成することになりました。これには、ダウンロードが失敗した場合にエラーの詳細とともに呼び出される完了ハンドラーがあります。(私の場合、問題は、短期間に送信したリクエストが多すぎて、ファイアウォールがそれらの一部をブロックしたことだと思います)。

テーブル全体をリロードする必要がある場合は、表示する場所によって異なります。私はセルで仮定しますか?その場合、セルを作成するときに、次の手順を実行します。

    CustomCell *cell = (CustomCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
    if (FBSession.activeSession.isOpen) {
        [[FBRequest requestForMe] startWithCompletionHandler:
            ^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *user, NSError *error) {
                   if (!error) {
                         cell.profileImage.profileID = user.id;
                   }
             }];
    }

また、クエリの結果を使用user.iduser.nameてアクセスできることに注意してください。requestForMe

于 2012-12-07T23:46:56.283 に答える