2015-06-19 3 views
0

У моего приложения есть экран входа в систему Facebook, который после входа в систему показывает фотографию, изображение, имя пользователя, адрес электронной почты и выхода из системы .Link View Controllers to Mirror

Я пытаюсь выяснить, как связать текущих пользователей фотографию с UIView или UIImageView (который когда-либо более применим, поскольку я использовал UIView называется FBProfilePictureView) в основном ВК называется HomeViewController. Вот код, который у меня есть для LoginViewController, который запрашивает и возвращает информацию FB. У меня также есть segue на HomeViewController после ввода информации о пользователе.

LoginViewController.h:

#import <UIKit/UIKit.h> 
#import <QuartzCore/QuartzCore.h> 
#import <FacebookSDK/FacebookSDK.h> 

@interface LoginViewController : UIViewController <FBLoginViewDelegate> 

@property (weak, nonatomic) IBOutlet FBLoginView *loginButton; 

@property (weak, nonatomic) IBOutlet UILabel *lblLoginStatus; 

@property (weak, nonatomic) IBOutlet UILabel *lblUsername; 

@property (weak, nonatomic) IBOutlet UILabel *lblEmail; 

@property (weak, nonatomic) IBOutlet FBProfilePictureView *profilePicture; 

@property (strong, nonatomic) IBOutlet UIImageView *loginwallpaper; 
@property (strong, nonatomic) IBOutlet UIImageView *loggedinwallpaper; 

@property (strong, nonatomic) IBOutlet UIImageView *FBlogin; 
@property (strong, nonatomic) IBOutlet UIImageView *FBlogout; 

@end 

и вот LoginViewController.m

#import "LoginViewController.h" 

@interface LoginViewController() 

- (void)toggleHiddenState:(BOOL)shouldHide; 

@end 

@implementation LoginViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    [self toggleHiddenState:YES]; 
    self.lblLoginStatus.text = @""; 

    self.loginButton.readPermissions = @[@"public_profile", @"email"]; 
    self.loginButton.layer.cornerRadius = 0; 
    [self.loginButton.layer setBorderWidth:0.0f]; 

    self.loginButton.delegate = self; 


    // Do any additional setup after loading the view. 
} 

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

-(void)toggleUnhiddenState:(BOOL)shouldShow{ 
    self.loggedinwallpaper.hidden = NO; 
} 

-(void)loginViewShowingLoggedInUser:(FBLoginView *)loginView{ 
    self.lblLoginStatus.text = @""; 

    [self toggleHiddenState:NO]; 
    [self toggleUnhiddenState:YES]; 
} 

-(void)loginViewShowingLoggedOutUser:(FBLoginView *)loginView{ 
    self.lblLoginStatus.text = @""; 

    [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"]; 

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
    UITabBarController *tabcontroller = (UITabBarController *)[storyboard instantiateViewControllerWithIdentifier:@"HomeViewController"]; 
    [self presentViewController:tabcontroller animated:YES completion:nil]; 
} 

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

- (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 

Все другие вопросы размещены здесь не очень помогло - они были слишком расплывчатым.

Если кто-то может просто показать мне, как подключить этот профиль к UIImageView или UIView в HomeViewController, это было бы замечательно! Я знаю, что это легко, и я просто разочарован тем, что это дает мне такую ​​проблему.

(Я знаю, что мне нужно использовать метод prepareForSeuge. Я просто не уверен в синтаксисе, как это сделать.)

ответ

0

Это поможет вам. Перейдите в HomeViewController.xib и поместите UIView, перетащив его.

Теперь выберите этот вид и с правой стороны XCode нажмите на третью вкладку, которая является Identity Inspector. Здесь задайте имя класса как FBProfilePictureView, затем попробуйте.

0

Если вы хотите Diplay изображение в FBProfilePictureView затем

XIb/StoryBoard -> Идентичность инспектор -> имя класса -> FBProfilePictureView

-(void)loginViewFetchedUserInfo:(FBLoginView *)loginView user:(id<FBGraphUser>)user{ 
    NSLog(@"%@", user); 
    self.profilePicture.profileID = user.id; 
} 

Если вы хотите отобразить в ImageView

queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH,0); 

dispatch_async(queue, ^{ 


      // Load UImage from URL 
      NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://graph.facebook.com/%@/picture?width=200&height=200", user.id]]; 

      NSData *data = [NSData dataWithContentsOfURL:url]; 

      // Then to set the image it must be done on the main thread 
      dispatch_sync(dispatch_get_main_queue(), ^{ 
       UIImage *image = [UIImage imageWithData:data]; 
       yourImageView.image = image 
       image = nil; 
      }); 

     }); 
Смежные вопросы