我有一个带.h,.m文件和两个appDelegate文件的示例代码。我想将项目的功能添加到我的应用程序中。前两个文件是一个ViewController文件,所以我只需要将其拖入,但其他两个是AppDelegate,我显然不能有两个app delegate。但是在这个示例应用程序的情况下,app委托被用作正确的viewcontroller,因为在UIViewController文件的.m文件中,有这样的代码:
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
由于AppDelegate不使用像willBecomeActive ...这样的功能,如何在UIViewController文件中转换文件?我需要在上面的代码中更改以调用控制器而不是代理(我的AppDelegate将保持不变)。
代码在这里:https://github.com/fbsamples/ios-3.1-howtos/tree/master/SendRequestsHowTo ...然后打开项目:SendRequestsHowTo ...它只有4个文件
P.S。我想我必须创建一个像app delegate这样的东西,虽然不是app委托。
答案 0 :(得分: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 "Cannot Open Page Error" When Authenticating User with Single-Sign-On