2012-03-24 7 views
0

Ich versuche zu verstehen, wie ein Delegat mit dem Facebook SDK funktioniert.Xcode/Objective-C Facebook-Delegat Versuch

Ich habe dies als meine View-Controller:

#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 

Da ist in meinem FacebookClass ..welche ich als Delegierter verwenden möchten ... Ich habe:

#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 

Also, was ich will passiert, wenn ich mich anmelde, möchte ich den String "Angemeldet" in der Konsole protokollieren. Ab sofort tut es nicht. Klar, ich bin verwirrt.

Aktualisierung: Delegierten Instanziierung hinzugefügt.

Antwort

0

Ihr Objekt FBDelegate ist null. Es wird niemals instanziert. Sie sollten Ihre

- (void)viewDidLoad 

Methode Instanz in es zu tun:

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

warten, was? Dein erster Satz ist in Ordnung, aber dein Code macht keinen Sinn. –

+0

Vergiss das; Ich habe es falsch gelesen. –

+0

Versucht, dass ... see update..didnot work :( – JoshDG