2012-11-18 93 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類中使用它。 –

相關問題