我确实将这个方法添加到app委托中,我理解这是大多数人的问题,但就我而言,我认为问题出在其他地方……任何帮助都会很棒.
- (BOol)application:(UIApplication *)application handleOpenURL:(NSURL *)url {return [[settingsvc facebook] handleOpenURL:url];}
在app delegate标头中的位置:
@property (strong,nonatomic) Settings *settingsvc;解决方法 几件事.
– 您只需要在整个应用程序的一个位置实现fbDIDLogin.您没有在使用Facebook的每个视图控制器上实现它.
– 假设您按照Facebook的iOS文档中的“入门”步骤 *** 作,您的Facebook对象将作为应用程序代理的属性.并且您的fbDIDLogin方法仅在您的app委托中.这也应该是代码中声明Facebook变量的唯一位置.这意味着无论何时从代码中的任何其他位置访问Facebook,您都会执行以下 *** 作:
ProjectnameAppDelegate *appDelegate = (ProjectnameAppDelegate *)[UIApplication sharedApplication].delegate;[appDelegate.facebook someMethod];
– 您的app委托中的handleOpenURL和openURL方法应该与Facebook的示例文档完全相同,而不是您发布的代码.
– 我个人更喜欢将Facebook对象从app委托移到单一帮助程序类中,但如果你是初学者,那么这可能比你需要的更高级.
更新信息回复评论:
-someMethod是你想要调用的任何Facebook方法(发布在墙上,验证,等等)
– 您应该将所有FBSessionDelegate方法放在您的app委托中
– 您需要在发布到Facebook的视图控制器上实现FBDialogDelegate
– 然后在您的视图控制器中,当您想要发布到用户的墙上时,执行以下 *** 作:
- (voID)postToWall { ProjectnameAppDelegate *appDelegate = (ProjectnameAppDelegate *)[UIApplication sharedApplication].delegate; if (appDelegate.facebook.isSessionValID) { //we're logged in so call the post dialog [self doPost:nil]; } else { //we're not logged in so call the login and then do the post when it's done [[NSNotificationCenter defaultCenter] addobserver:self selector:@selector(doPost:) name:@"FBLoginComplete" object:nil]; NSArray *permissions = [[NSArray alloc] initWithObjects: @"offline_access",@"publish_stream",nil]; [appDelegate.facebook authorize:permissions]; [permissions release]; }}-(voID)doPost:(NSNotification *) notification { ProjectnameAppDelegate *appDelegate = (ProjectnameAppDelegate *)[UIApplication sharedApplication].delegate; if (appDelegate.facebook.isSessionValID) { NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys: something,@"app_ID",something,@"link",@"picture",@"name",@"caption",@"description",nil]; [appDelegate.facebook dialog:@"Feed" andParams:params andDelegate:self]; [params release]; } [[NSNotificationCenter defaultCenter] removeObserver:self]; }
– 要使上述工作正常,您需要在登录完成(成功或失败)时发布NSNotificationCenter消息“FBLoginComplete”.
注意:我编写了上面的代码而没有编译或测试它所以它可能不完美(但它通常是:)
– 请注意:如果没有d出dailog,你不能直接发布到用户的墙上.用户始终能够在帖子到达墙壁之前对其进行编辑.
总结以上是内存溢出为你收集整理的iphone – 不在主视图控制器上时不调用fbDidLogin全部内容,希望文章能够帮你解决iphone – 不在主视图控制器上时不调用fbDidLogin所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)