0

我有一个带有 .h、一个 .m 文件和两个 appDelegate 文件的示例代码。我想将项目的功能添加到我的应用程序中。前两个文件是一个ViewController文件,所以我只要把它拖进去,但是另外两个是AppDelegate,我显然不能有两个app delegate。但是在这个示例应用程序的情况下,应用程序委托被用作适当的视图控制器,因为在 UIViewController 文件的 .m 文件中,有以下代码:

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

由于 AppDelegate 不使用 willBecomeActive... 之类的功能,我如何在 UIViewController 文件中转换文件?我需要在上面的代码中更改什么来调用控制器而不是委托(我的 AppDelegate 将保持不变)。

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

PS我想我必须创建一个类似于应用程序委托的东西,但它不是一个应用程序委托。

4

1 回答 1

1

据我所知,您想将代码从 SendRequestsHowTo 移动到您的项目中。而且您不想通过您的 AppDelegate 使用 Facebook?您可以创建新类(例如 FacebookManager)。然后将代码从 SendRequestsHowTo 的 AppDelegate 移动到 FacebookManager,就可以使其成为单例。然后你可以从 ViewController 访问:

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“无法打开页面错误”

于 2012-11-18T21:54:59.960 回答