获取 facebook 用户信息到另一个视图控制器

Posted

技术标签:

【中文标题】获取 facebook 用户信息到另一个视图控制器【英文标题】:fetch facebook user info to another view controller 【发布时间】:2014-03-23 00:39:39 【问题描述】:

我有一个默认的 facebook sdk loginViewController,但是在 facebookSDK 页面上的所有示例中,他们在同一个 viewController 中获取用户信息,所以如果我想存储所有用户信息(由 loginViewController 获取)以用于另一个视图控制器?

从 loginViewController 获取用户代码

- (void)loginViewFetchedUserInfo:(FBLoginView *)loginView
                            user:(id<FBGraphUser>)user 

    self.profilePictureView.profileID = user.id;
    self.nameLabel.text = [NSString stringWithFormat:@"Welcome,\n %@", user.name];
    NSLog(@"%@ has been got from loginViewFetchedUserInfo function",user.name);
    _loggedInUser = user;


// Implement the loginViewShowingLoggedInUser: delegate method to modify your app's UI for a logged-in user experience
- (void)loginViewShowingLoggedInUser:(FBLoginView *)loginView 
    self.statusLabel.text = @"Click button below to continue";
    [self.logoImage setHidden:YES];
    [self.profilePictureView setHidden:NO];
    [self.continueButton setHidden:NO];
    //[self pushToMainTabsBarController];


// Implement the loginViewShowingLoggedOutUser: delegate method to modify your app's UI for a logged-out user experience
- (void)loginViewShowingLoggedOutUser:(FBLoginView *)loginView 
    self.profilePictureView.profileID = nil;
    self.nameLabel.text = @"";
    self.statusLabel.text= @"Please login to continue!";
    [self.logoImage setHidden:NO];
    [self.profilePictureView setHidden:YES];
    [self.continueButton setHidden:YES];


【问题讨论】:

【参考方案1】:

在另一个视图控制器中,您只需要插入这样的属性

@property (nonatomic, strong) id<FBGraphUser> user;

然后例如,当您在第一个方法中获取用户数据时,将属性设置为新的视图控制器(显然已经实例化):

_newViewController.user = user;

或者,如果您想在另一个时间实例化新的视图控制器,您可以在登录视图控制器中设置相同的属性来临时存储用户数据(就像您已经在使用 _loggedInUser = user; 所做的那样),然后将其传递给在适当的时候新的视图控制器。

【讨论】:

对不起,我不完全知道如何“将属性设置为新的视图控制器(显然已经实例化):”。请给我解释一下【参考方案2】:

您可以将其存储在 Core Data 中,然后在其他视图中检索或通过 segue 方法将其传递,例如

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

    if ([segue.identifier isEqualToString:@"ToOtherViewController"]) 
        OtherViewController *OVC = (OtherViewController *)segue.destinationViewController;
        OVC.user = user;
    

使用 Core Data 需要little reading。

【讨论】:

以上是关于获取 facebook 用户信息到另一个视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

Facebook iOS SDK - 跳转到另一个视图

IOS - 从表视图控制器获取值并将其发送到另一个表视图控制器

单击搜索栏时如何导航到另一个视图控制器

将信息发送到另一个视图控制器

Swift:在视图控制器之间传递 facebook 登录 graphRequest 结果

从视图获取值到控制器,然后到另一个视图