0

我的视图控制器中有以下代码

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];
         }
     }];
}

我遇到了两个问题。首先是配置文件图像永远不会被获取和显示。第二个是我必须[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 回答