如何使Facebook登录按钮转换为备用视图控制器

时间:2015-03-17 20:24:23

标签: objective-c xcode facebook login segue

所以我想在TabBarController之前加入一个Facebook登录界面。到目前为止我所拥有的是一个视图控制器,它首先显示一个"登录Facebook"按钮。点击后,它会将您带到设备上的应用程序或facebook.com。您输入信息,单击登录,然后它会返回到我现在显示的用户配置文件图片,名称,电子邮件和注销按钮的同一视图控制器。我想要发生的事情是,一旦你点击通过Facebook应用程序或网站登录,它就会带你到另一个视图控制器,在我的例子中,一个TabBarController。按照简单的步骤:

  1. 点击"登录Facebook"按钮。
  2. 进入登录界面后,输入您的信息。
  3. 该应用程序现在进入TabBarController,这是我正在制作的应用程序的主要主页。
  4. 当前设置的方式是"按钮"是一个UIView控制器,其中包含从Facebook SDK中提取的 FBLoginView 的自定义类。我只需要这个"按钮"输入登录信息并单击登录后,转到我的TabBarController。

    仅供参考:我使用的代码是Facebook在使用其教程向应用添加Facebook登录时为您提供的设置。下面是我的LoginViewControoler.m

    #import "LoginViewController.h"
    
    @interface LoginViewController ()
    
    @end
    
    @implementation LoginViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view.
        self.loginButton.delegate = self;
        [self toggleHiddenState:YES];
        self.lblLoginStatus.text = @"";
        self.loginButton.readPermissions = @[@"public_profile", @"email", @"user_friends"];
    
    }
    
    -(void)loginViewShowingLoggedInUser:(FBLoginView *)loginView{
        self.lblLoginStatus.text = @"You are logged in.";
        [self toggleHiddenState:NO];
    
    }
    
    -(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)loginViewShowingLoggedOutUser:(FBLoginView *)loginView{
        self.lblLoginStatus.text = @"";
    
        [self toggleHiddenState:YES];
    }
    
    
    -(void)loginView:(FBLoginView *)loginView handleError:(NSError *)error{
        NSLog(@"%@", [error localizedDescription]);
    }
    
    
    -(void)toggleHiddenState:(BOOL)shouldHide{
        self.lblUsername.hidden = shouldHide;
        self.lblEmail.hidden = shouldHide;
        self.profilePicture.hidden = shouldHide;
    }
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    /*
    #pragma mark - Navigation
    
    // In a storyboard-based application, you will often want to do a little preparation before navigation
    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
        // Get the new view controller using [segue destinationViewController].
        // Pass the selected object to the new view controller.
    }
    */
    
    @end
    

1 个答案:

答案 0 :(得分:0)

我知道这样做的方法是将登录按钮放在模态View Controller上,该控制器在启动时显示(在初始视图控制器的viewDidLoad中)。然后,它会在成功登录尝试结束时或使用解除按钮时自行解除。