2013-12-14 61 views
1

我已經將Facebook iOS SDK添加到我的xCode項目中,因此它允許用戶登錄。但是,一旦用戶登錄,在同一個視圖控制器中,他們的信息只是從他們的配置文件中更新並且登錄按鈕更改爲註銷。Facebook登錄後重定向到新的ViewController

但是,如果登錄成功,我希望將用戶重定向到DashboardViewController。我會怎麼做?

這裏是我的.m文件

#import "ViewController.h" 

#import "FriendsViewController.h" 

@interface ViewController() 

@end 

@implementation ViewController 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.delegate = [[UIApplication sharedApplication] delegate]; 
    self.facebook = [self.delegate facebook]; 
    self.facebook.delegate = self; 

} 

-(void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
    [self.loginButton setTitle:[self.facebook loginLabel] forState:UIControlStateNormal]; 
    self.userProfileImage.profileID = [self.facebook userProfilePicture].profileID; 

    if (FBSession.activeSession.state == FBSessionStateCreatedTokenLoaded) { 

     // Yes, so just open the session. 
     [self.facebook login]; 
    } 
} 

- (IBAction)performLogin:(id)sender 
{ 
    if([self.facebook status] == logOff) 
    { 
     [self.facebook login]; 
    } 
    else 
    { 
     [self.facebook logout]; 
    } 
} 

- (void)loginFacebookStatusUpdate 
{ 
    [self.loginButton setTitle:[self.facebook loginLabel] forState:UIControlStateNormal]; 

    self.userProfileImage.profileID = [self.facebook userProfilePicture].profileID; 
    self.userProfileLabel.text = [self.facebook userProfileName]; 
    self.userProfileBirth.text = [self.facebook userProfileBirthday]; 
} 

- (void)getFriends:(id)sender 
{ 


    if([self.facebook isLogged]) 
    { 
     NSError *error; 
     NSString *query = QUERY_USER_FRIENDS; 

     [self.facebook submitQueryFQL:query error:error]; 
    } 
} 

- (void)fetchFQLQueryResult:(NSArray *)result error:(NSError *)error 
{ 
    self.friends = [NSArray arrayWithArray:result]; 

    FriendsViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"FriendsViewController"]; 
    controller.friends = self.friends; 

    [self presentViewController:controller animated:YES completion:nil]; 

} 



@end 
+0

您將重定向在登錄完成後調用的方法是簡單的答案。根據DashboardViewController的位置有多種不同的重定向方式。它是tabbarcontroller中的另一個選項卡嗎?它在UINavigationController棧中的某處嗎?這一切都取決於它與ViewController的關係。 – random

+0

它是一個獨立視圖控制器,不在tabbar中,在StoryBoards中設置 – Omar

+0

所以你只是想在用戶登錄後推送它?檢查了這一點http://stackoverflow.com/questions/13987026/ios-push-viewcontroller-from-code-and-storyboard – random

回答

1

是它使用Facebook的默認功能是可能的。試試這個,可以幫助充分

- (void)loginViewFetchedUserInfo:(FBLoginView *)loginView user:(id<FBGraphUser>)user { 
     NSLog(@"email address %@",[user objectForKey:@"email"]); 
    NSLog(@"Token Return %@",[FBSession activeSession].accessTokenData); 
    dashBoardViewController *dashBoard = [[dashBoardViewController alloc]initWithNibName:@"dashBoardViewController" bundle:nil]; 
    [self.navigationController pushViewController:dashBoard animated:NO]; 
} 

它的正常工作&我沒測試過,其實我在我的上一個項目相同的工作。試試吧

2

我想你使用的是FBLoginView的Facebook登錄。因此,一旦完成登錄過程,您可以通過以下方法重定向用戶。你需要給loginView。

- (void)loginViewShowingLoggedInUser:(FBLoginView *)loginView 
{ 
     dashBoardViewController *dashBoard = [[dashBoardViewController alloc]initWithNibName:@"dashBoardViewController" bundle:nil]; 
[self.navigationController pushViewController:dashBoard animated:YES]; 
} 

並以同樣的方式,你可以利用該方法

- (void)loginViewShowingLoggedOutUser:(FBLoginView *)loginView 
{ 
     // Your Code... 
} 

希望也辦理註銷,這將工作。 :)