0

我正在尝试从 UIViewController 获取个人资料图片。

我的 Facebook 在单例课程中。从 UIViewController [[myfacebook shared requestWithGraphPath:@"me/picture" andDelegate:self];
如果我第一次需要登录或应用程序启动,这不起作用。因为正在调用授权并调用了didlogin。

这条线没有被击中。- (void)request:(FBRequest *)request didLoad:(id)result {

我该如何解决这些场景 1.Singleton Facebook 实例类,2.从 UIViewController 调用 3.需要登录。

4

1 回答 1

0

我建议创建一个名为 FacebookSingletonDelegate 的协议

@class FacebookSingleton; 

@protocol FacebookSingletonDelegate <NSObject>

- (void) facebookSingletonDidLogin:(FacebookSingleton *) facebookSingleton;

- (void) facebookSingletonDidNotLogin:(FacebookSingleton *) facebookSingleton;

- (void) facebookSingletonDidLogout:(FacebookSingleton *) facebookSingleton;

- (void) facebookSingleton:(FacebookSingleton *)facebookSingleton
            request:(FBRequest *) request
            didLoad:(id)result;


@end

然后在您的 FacebookSingleton.h 中创建一个属性,例如

@property (nonatomic, strong) id<FacebookSingletonDelegate> delegate;

然后让您的视图控制器符合协议 -

@interface MyViewController<FacebookSingletonDelegate>

然后,将自己设置为视图控制器中的委托,例如 -

myViewController.delegate = self;

然后,从 FacebookSingleton 实现 (FacebookSingleton.m) 触发委托方法 -

- (void)request:(FBRequest *)request didLoad:(id)result 
{
  [self.delegate facebookSingleton:self request:request didLoad:result]; 
}

然后,您可以在视图控制器中实现以下方法 -

- (void) facebookSingleton:(FacebookSingleton *)facebookSingleton
            request:(FBRequest *) request
            didLoad:(id)result
{
 // the view controller will receive the event in here
}
于 2012-09-12T22:08:13.220 回答