2012-03-24 12 views
0

Facebook SDKを使用してデリゲートの仕組みを理解しようとしています。Xcode/Objective-C Facebook代理人の試行

私は私のビューコントローラとしてこれを持っている:

#import <UIKit/UIKit.h> 
#import "FBConnect.h" 
#import "FacebookClass.h" 

@interface ViewController : UIViewController 

@property (nonatomic, retain) Facebook *facebook; 

- (IBAction)btnPress:(id)sender; 

@end 

#import "ViewController.h" 

@implementation ViewController 

@synthesize facebook; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    FacebookClass *delegate = [[FacebookClass alloc] init]; 

    facebook = [[Facebook alloc] initWithAppId:@"228051460617035" andDelegate:delegate]; 

    // Do any additional setup after loading the view, typically from a nib. 
} 

- (IBAction)btnPress:(id)sender { 
    [facebook authorize:nil]; 
} 

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { 
    return [self.facebook handleOpenURL:url]; 
} 

...and other default viewcontroller methods 

それから私は、デリゲートとして使用する..which私FacebookClassに...私がしている:

#import <UIKit/UIKit.h> 
#import <Foundation/Foundation.h> 

#import "FBConnect.h" 

@interface FacebookClass : NSObject 
<UIApplicationDelegate, FBSessionDelegate> 

@end 
#import "FacebookClass.h" 

@implementation FacebookClass 

- (void)fbDidLogin { 
    NSLog(@"Logged in"); 
} 

- (void)fbDidExtendToken:(NSString*)accessToken 
       expiresAt:(NSDate*)expiresAt { 

    NSLog(@"Extended it"); 
} 

- (void)fbDidNotLogin:(BOOL)cancelled 
{ 
    NSLog(@"Did not login"); 

} 

- (void)fbDidLogout 
{ 
    NSLog(@"Logged out"); 

} 

- (void)fbSessionInvalidated 
{ 
    NSLog(@"Session not valid"); 

} 

@end 

だから私は何をしたいです私がログインすると、コンソールに「Logged in」という文字列を記録する必要があります。今のところ、そうではありません。明らかに、私は混乱しています。

更新: デリゲートのインスタンス化が追加されました。

答えて

0

あなたのオブジェクトFBDelegateはnilです。インスタンス化されることはありません。あなたの

- (void)viewDidLoad 

方法インスタンスではやってください。

FBDelegate = [[FacebookClass alloc] init]; 
+0

待ちを、何?あなたの最初の文は問題ありませんが、あなたのコードは理にかなっていません。 –

+0

それを心配しないでください。私は誤解しました。 –

+0

これを試してみました..アップデートを参照してください:( – JoshDG