- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我是 iOS 开发新手。在我的应用程序中集成 facebook API 时,我遇到了一个问题,即没有调用 fbDidLogin。当我从主视图 Controller (即应用程序委托(delegate)调用的那个)调用 API 时,一切正常,但在我的例子中,它在设置 View Controller 下。我从字面上将代码从主视图 Controller (它工作的地方)复制粘贴到设置 View Controller ,它不起作用。
我确实将此方法添加到应用程序委托(delegate)中,我知道这是大多数人的问题,但就我而言,我认为问题出在其他地方......任何帮助都会很棒。
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [[settingsvc facebook] handleOpenURL:url];
}
在应用程序委托(delegate) header 中的位置:
@property (strong, nonatomic) Settings *settingsvc;
最佳答案
几件事。
-您只需要在整个应用程序的一处实现 fbDidLogin。您不会在每个使用 facebook 的 View Controller 上实现它。
-假设您遵循了 Facebook 的 iOS 文档中的入门步骤,您的 Facebook 对象将作为您的应用委托(delegate)的属性存在。并且您的 fbDidLogin 方法仅在您的应用委托(delegate)中。这也应该是您的代码中唯一声明 Facebook 变量的地方。这意味着无论何时您从代码中的其他任何地方访问 facebook,您都会执行如下操作:
ProjectNameAppDelegate *appDelegate = (ProjectNameAppDelegate *)[UIApplication sharedApplication].delegate;
[appDelegate.facebook someMethod];
-您的应用委托(delegate)中的 handleOpenURL 和 openURL 方法应该与 Facebook 的示例文档中的完全一样,而不是您发布的代码。
-我个人更喜欢将 Facebook 对象从应用程序委托(delegate)中移出到单例助手类中,但如果您是初学者,那么这可能比您需要的更高级。
更新信息回答评论:
-someMethod 是您要调用的任何 Facebook 方法(张贴在墙上,进行身份验证,等等)
-您应该将所有 FBSessionDelegate 方法放在您的应用委托(delegate)中
-您需要在您发布到 Facebook 的 View Controller 上实现 FBDialogDelegate
-然后在你的 View Controller 中,当你想发布到用户的墙上时,做这样的事情:
- (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",
something, @"picture",
something, @"name",
something, @"caption",
something, @"description",
nil];
[appDelegate.facebook dialog:@"feed" andParams:params andDelegate:self];
[params release];
}
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
-为了使上述工作正常,您需要在登录完成(成功或失败)时发布 NSNotificationCenter 消息“FBLoginComplete”。
-注意:我在没有编译或测试的情况下编写了上面的代码,因此它可能并不完美(但通常是:)
-请注意:您不能在没有弹出 dailog 的情况下直接张贴到用户的墙上。用户始终可以在帖子上墙之前对其进行编辑。
关于iphone - 不在主视图 Controller 上时不调用 fbDidLogin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10373511/
我有一个基于 REST 的经典 springboot 应用程序。我想开始使用 Vaadin,以便直接从 java 代码创建 ui 组件。 我在他们的教程中发现,您必须使用 @Route('') 创建一
为了设计,我使用 Storyboard。主页 View Controller 包含单独 View 中的侧面菜单,我设计了带有 Collection View 的主页。对于侧面菜单,我使用包含 MyNa
我正在寻找如何为 UWP Win 10 应用程序构建主/详细 View 的好示例,如本页所示:https://msdn.microsoft.com/en-us/library/windows/apps
我遇到这个问题,在 iPhone 7 Plus 的横向模式下,当单击设备左侧表格 View 中的单元格时,内容会显示在表格 View 的顶部,或者替换表格 View .在这种情况下, Split Vi
我想改变我的主视图(不是按钮或 TextView )的背景颜色,只是通常是黑色的真实背景......我得到了这个代码: view.setBackgroundColor(0xfff00000); 这在
我正在尝试在 Android 应用程序中使用 Wikitude API,但相关文档很少。 那么,有什么办法可以在wikitude View 中添加一个action bar吗?还有一些按钮?因为我只看到
我正在尝试隐藏 navigationViewControleler 层次结构的桅杆 View Controller 中的工具栏。 我创建一个新的 ViewController 作为 RootViewC
已关闭。此问题不符合Stack Overflow guidelines .它目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及
我正在寻找实现可编辑详细 View 的可能性。我的应用程序有一个经典的主 -> 详细 View 设置。苹果文档(http://developer.apple.com/library/ios/#feat
我正在使用一个框架,该框架使用其特定控件创建 UIViewControllers。我无法访问其 Storyboard来手动修改它。有没有办法向其 View 添加标签之类的内容并正确定位它,即使 Vie
我有带 subview 和应用约束的 View Controller 。 问题:我想做的是以编程方式添加 ScrollView 只有 iPhone 4s 设备在 ScrollView 中具有 self
我有基本的主视图/详细 View 与默认的 ASP.NET MVC 路由配合得很好;但是我想构建一些这样的 URL: /Class/Details/5 -- General Detail view [
我需要在 Split View Controller 中更改 View Controllers 的宽度大小。我的意思是第一个 View Controller 的默认值是 320。第二个是 703。我需
我是一名优秀的程序员,十分优秀!