2012-12-07 22 views
0

我有下面的代碼在我的視圖控制器的Facebook的iOS SDK FBProfilePictureView未取或顯示圖像

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]才能顯示名稱。這導致了一個醜陋的滯後。我如何解決這兩個問題?

回答

1

我不知道爲什麼你的配置文件圖像沒有被抓取,但我有一些配置文件圖像沒有顯示出來,並導致我寫了一個FBProfilePictureView的修改版本,這是here。這有一個完成處理程序,如果下載失敗,將會調用錯誤詳細信息。 (就我而言,我認爲問題是我在短時間內發出太多請求,而我的防火牆阻止了其中的一些)。

至於不得不重新加載整個表格,這取決於您顯示它的位置。我假設在一個牢房裏?如果是的話,當你正在創建的單元格,執行:

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查詢的結果。

+0

我剛剛結束'[tableView reloadData]'路線。我將不得不晚點回來。但是,我確實使用了您的定製版本的FBProfilePictureView,它似乎幫助我,所以我會接受您的答案。 – jakenberg