我正在尝试在我的应用程序代码中实现Facebook。实际上,我有一个简单的TabbarController和2 ViewController。
我的AppDelegate代码:
@interface AppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate> {
UIWindow *window;
UITabBarController *tabBarController;
Facebook *facebook;
}
@property (retain, nonatomic) IBOutlet UIWindow *window;
@property (retain, nonatomic) IBOutlet UITabBarController *tabBarController;
@property (retain, nonatomic) Facebook *facebook;方法代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[self.window addSubview:self.tabBarController.view];
[self.window makeKeyAndVisible];
facebook = [[Facebook alloc] initWithAppId:@"12345678910" andDelegate:_tabBarController];
............
return YES;
}FirstViewController.h
#import "Facebook.h"
@interface FirstViewController : UIViewController <FBRequestDelegate, FBDialogDelegate, FBSessionDelegate> {
}FirstViewController.m
#import "Appdelegate.h"
-(IBAction)shareFacebook {
AppDelegate *appdelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
if (![appdelegate.facebook isSessionValid]) {
NSArray *permissions = [[NSArray alloc] initWithObjects:
@"publish_stream",
@"read_stream",
nil];
[appdelegate.facebook authorize:permissions];
[permissions release];
}
} 我收到了这段代码的警告:"andDelegate:_tabBarController"将"UITabBarController *“发送到不兼容类型'id‘的参数
发布于 2012-03-27 18:02:34
我想说UITabBarController *不是FBSessionDelegate ..。将协议添加为<UIApplicationDelegate, UITabBarControllerDelegate,FBSessionDelegate >,然后
facebook = [[Facebook alloc] initWithAppId:@"12345678910" andDelegate:self];发布于 2012-03-27 18:05:46
在我的应用程序中,我像你一样在AppDelegate中声明和初始化facebook对象。然而,我让AppDelegate使用这些(就像另一个回答说的那样):FBRequestDelegate、FBDialogDelegate、FBSessionDelegate。之后,我将所有的facebook登录/注销/post.等方法放在app委托类中。
之后,您只需将facebook对象从FirstViewController传递给didFinishLaunchingWithOptions即可。
如果你不明白,让我知道,我会给你更多的细节。我可能解释得不太清楚。
PS:我可能错了,但从我在网络上看到的情况来看,在应用程序delagete中声明方法更容易一些,它用选项完成了启动,然后将它们传递给特定的视图控制器。
https://stackoverflow.com/questions/9894849
复制相似问题