FB登录后IOS切换视图

Posted

技术标签:

【中文标题】FB登录后IOS切换视图【英文标题】:IOS switch view after FB login 【发布时间】:2014-08-01 05:58:20 【问题描述】:

我用storyboard,第一个view是FB登录。我想在FB登录成功后切换视图到导航控制器(FB登录可以工作)。

我不知道如何切换视图。我什至使用按钮并按下,但它不起作用。

FLoginViewController 类:

#import "FBloginViewController.h"
#import <FacebookSDK/FacebookSDK.h>

@interface LoginStatusViewController ()

-(void)toggleHiddenState:(BOOL)shouldHide;

@end

@implementation FBLoginViewController

-(void)toggleHiddenState:(BOOL)shouldHide
    self.lblUsername.hidden = shouldHide;
    self.lblEmail.hidden = shouldHide;
    self.profilePicture.hidden = shouldHide;


- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) 
        // Custom initialization
    
    return self;


-(void)loginView:(FBLoginView *)loginView handleError:(NSError *)error
    NSLog(@"%@", [error localizedDescription]);


-(void)loginViewShowingLoggedOutUser:(FBLoginView *)loginView
    self.lblLoginStatus.text = @"You are logged out";

    [self toggleHiddenState:YES];


-(void)loginViewFetchedUserInfo:(FBLoginView *)loginView user:(id<FBGraphUser>)user
    NSLog(@"%@", user);
    self.profilePicture.profileID = user.objectID;
    self.lblUsername.text = user.name;
    self.lblEmail.text = [user objectForKey:@"email"];


-(void)loginViewShowingLoggedInUser:(FBLoginView *)loginView
    self.lblLoginStatus.text = @"You are logged in.";
    [self toggleHiddenState:NO];


- (void)viewDidLoad

    [super viewDidLoad];
    // Do any additional setup after loading the view.

    [self toggleHiddenState:YES];
    self.lblLoginStatus.text = @"";
    self.loginButton.readPermissions = @[@"public_profile", @"email"];
    self.loginButton.delegate = self;


【问题讨论】:

试试这个***.com/questions/19563158/… 如果您需要任何帮助,我希望与您合作 FB登录可以工作,但是不知道如何切换视图到Navigation控制器。 你使用 xib 或故事板兄弟 如果你使用 xib 使用这个:***.com/questions/20742745/… 否则如果你使用故事板使用这个:***.com/questions/20715462/… 【参考方案1】:

在您的代码中,无论您想要执行切换到新控制器的任何位置,都可以使用此方法。

[self performSegueWithIdentifier:@"yourSegueIdentifierName" sender:nil];

您必须在 Interface Builder 中连接一个 segue,或者在您的应用程序中以编程方式提供一个 segue。一旦遇到上述语句,此方法将自动触发 prepareForSegue 方法,并出现下一个控制器。

希望这会有所帮助。

【讨论】:

【参考方案2】:

看来您必须研究如何在应用程序中正确设置视图控制器。

从第一个问题来看,结构是

应用启动 -> FBLogin -> 导航控制器 -> 下一个视图控制器

把这个改成

App Launch ->NAv Contoller-> FBLogin ->(PUSH)-> Next Viewcontroller

意味着在 FBLogin VC 中嵌入导航控制器并继续工作流

使用-pushViewController:animated:方法跳转到下一页

【讨论】:

你能给我一个示例代码或方法吗?因为不知道FB登录成功后如何自动推送...非常感谢!【参考方案3】:

用这个替换你的方法:

-(void)loginViewShowingLoggedInUser:(FBLoginView *)loginView
   self.lblLoginStatus.text = @"You are logged in.";
   [self toggleHiddenState:NO];
   //if you have anavigation controller then
   [self performSegueWithIdentifier:@"yourSegueIdentifierName" sender:nil];
   //if you want to open a modal viewController
   YOURVIEWCONTROLLER *vc1 = [[YOURVIEWCONTROLLER alloc] initWithNibName:@"YOURVIEWCONTROLLER" bundle:nil];
   [vc1 setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
   [self presentViewController:vc1 animated:YES completion:nil];

【讨论】:

以上是关于FB登录后IOS切换视图的主要内容,如果未能解决你的问题,请参考以下文章

通过 iOS 9 登录 FB 时打开 Safari 网页视图

如何在 iOS 上的视图之间切换

切换视图时的 iOS 特定行为

登录成功后将视图导航到另一个视图

使用 FBSDK for iOS 登录冻结

从第三个观点出发