ios - Facebook 登录完成后的 UITableView reloadData()

标签 ios swift uitableview uiviewcontroller

我的应用允许用户通过 Facebook 登录。按登录按钮将用户重定向到 Safari/Facebook 应用程序(FBSDK 默认设置)。登录完成后,用户将被重定向回我的应用程序。在活跃的 Facebook session 期间,用户应该看到来自 Facebook 的个人资料图片和用户名显示在 UITavleView 单元格中。问题是单元格在重定向后没有更新,我需要在登录过程后手动调用 tableView.reloadData() 以使表格正确显示。

我试图覆盖 ViewController 的 viewDidAppear() 方法,但应用程序之间的转换不会调用此方法。我还尝试使用一个计时器,每 x 秒重新加载一次表数据,但这并不是我的问题的真正解决方案。我还考虑过使用一些应用程序委托(delegate)的方法,但这似乎也是一种不好的做法。有人知道吗?我试图在 FBSDK 文档中查找类似于 UIWebView 的 didFinishLoading() 的方法,但没有找到任何有值(value)的东西。

最佳答案

您可以使用 Facebook Login Delegate 方法。如果登录成功,则重新加载 tableview 数据

- (void)loginButton:(FBSDKLoginButton *)loginButton didCompleteWithResult:(FBSDKLoginManagerLoginResult *)result error:(NSError *)error {
if (error) {
    NSLog(@"Unexpected login error: %@", error);
    NSString *alertMessage = error.userInfo[FBSDKErrorLocalizedDescriptionKey] ?: @"There was a problem logging in. Please try again later.";
    NSString *alertTitle = error.userInfo[FBSDKErrorLocalizedTitleKey] ?: @"Oops";
    [[[UIAlertView alloc] initWithTitle:alertTitle
                                message:alertMessage
                               delegate:nil
                      cancelButtonTitle:@"OK"
                      otherButtonTitles:nil] show];
} else {
     NSLog(@"Success login and Reload Tableview data");
}
}

不要忘记设置你的 Facebook 按钮委托(delegate)

self.loginBut.delegate=self;

关于ios - Facebook 登录完成后的 UITableView reloadData(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32607685/

相关文章:

arrays - Swift:二进制搜索标准数组?

ios - 离屏(不可见)TableViewCell 不动画

ios - UITableView 和解析数据

iOS 屏幕捕获和性能

ios - iOS 11.3 更新是否会破坏人脸节点上的 ARKit/SceneKit SCNMaterial 渲染?

ios - 如何使用异步 NSURLConnection 将数据传递给 View Controller

uitableview - 如何在不重新加载数据的情况下更改uitableview中的高度单元格

ios - dequeueReusableCellWithIdentifier :forIndexPath: get used?的indexPath在哪里

swift - 需要澄清有关计算属性

iphone - 应用程序无法在 iPhone 4s 和 iPhone 5 (Swift) 上构建