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切换视图的主要内容,如果未能解决你的问题,请参考以下文章