我的应用允许用户通过 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/