2012-11-18 58 views
0

我有一个带.h文件和两个appDelegate文件的示例代码。我想添加什么项目做到我的应用程序。前两个文件是一个ViewController文件,所以我只需要拖入它,但另外两个文件是AppDelegate,而且我显然不能拥有两个应用程序委托。但是,在此示例的情况下,应用程序中的应用程序委托作为适当的ViewController,因为在UIViewController中文件的.m文件,有这样的代码:Facebook发送请求应用程序代理

AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 

由于AppDelegate中不使用的功能,如willBecomeActive ...,如何在UIViewController文件中转换文件?我需要在上面的代码中更改以调用控制器,而不是Delegate(我的AppDelegate将保持原样)。

的代码是在这里:https://github.com/fbsamples/ios-3.1-howtos/tree/master/SendRequestsHowTo ......然后打开项目:SendRequestsHowTo ......这是只有4个文件

附:我想我必须创建类似于应用程序委托的东西,尽管这不是应用程序委托。

回答

1

正如我所理解的,您想将SendRequestsHowTo中的代码移动到您的项目中。你不想通过你的AppDelegate使用Facebook? 您可以创建新类(例如FacebookManager)。然后将代码从SendRequestsHowTo的AppDelegate移动到FacebookManager,并且您可以将其设置为单例。 然后你就可以从视图控制器访问:

FacebookManager *manager = [FacebookManager sharedManager]; 
[manager openSessionWithAllowLoginUI:NO] 

,并从AppDelegate中到handleOpenURL:

- (BOOL)application:(UIApplication *)application 
      openURL:(NSURL *)url 
    sourceApplication:(NSString *)sourceApplication 
     annotation:(id)annotation { 
    self.openedURL = url; 
    // attempt to extract a token from the url 
    return [[FacebookManager sharedManager] handleOpenURL:url]; 
} 

不要忘记添加CFBundleURLTypes到Info.plist中,它应该是这样的:

<key>CFBundleURLTypes</key> 
<array> 
    <dict> 
     <key>CFBundleURLSchemes</key> 
     <array> 
      <string>fb1234567890</string> 
     </array> 
    </dict> 
</array> 

Facebook iOS Safari "Cannot Open Page Error" When Authenticating User with Single-Sign-On

+0

但是handleopenurl,我记得在代表中表示? – Alessandro

+0

这是我做了什么,(代码需要导入的FACEBOOK API):https://github.com/Alexmitico45/FacebookRequests/downloads ...继续下载并下载archive.zip(4个文件),但它仍然不起作用 – Alessandro

+0

你的FacebookViewController包含方法** - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation **,但是这个方法来自UIApplicationDelegate,你应该在你的AppDelegate类中使用它。 –

相关问题