gpt4 book ai didi

objective-c - 在 ios xcode 4.3( Storyboard)中弹出 facebook 提要对话框(用于墙贴)

转载 作者:行者123 更新时间:2023-11-28 17:35:11 25 4
gpt4 key购买 nike

我正在制作一个应用程序,我需要在其中集成一个 Facebook 共享(提要)对话框。我阅读了 https://developers.facebook.com/docs/mobile/ios/build/ 上的所有内容,当应用程序完成启动时,我能够加载 facebook 共享(提要)对话框。但我的问题是我使用的是 xcode 4.3,即 Storyboard,我想在按钮操作上加载 facebook 提要对话框。

我制作了另一个 View Controller 并粘贴了 AppDelegate 函数的所有内容 (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

在其 -(void) viewDidload 中,能够加载“登录页面”,然后加载我的“facebook 应用程序”页面。

在那之后,当我允许访问我的 facebook 应用程序时,它不会显示“提要对话框”

这是我的 viewController.h 文件

 #import "FBConnect.h"

@interface ViewController : UIViewController<FBSessionDelegate,FBDialogDelegate>
{
Facebook *facebook;
}
@property (nonatomic, retain) Facebook *facebook;

@end

-这是我的 ViewController.m 文件

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

@synthesize facebook=_facebook;
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
facebook = [[Facebook alloc] initWithAppId:@"284727404938450" andDelegate:self];

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"FBAccessTokenKey"]
&& [defaults objectForKey:@"FBExpirationDateKey"]) {
facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
}

if (![facebook isSessionValid]) {
[facebook authorize:nil];
}
}

- (void)fbDidLogin {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"];
[defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"];
[defaults synchronize];

[facebook dialog:@"feed" andDelegate:self];
}

但是这里有两个在 AppDelegate 文件中使用的方法

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [ facebook] handleOpenURL:url];
}

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [ facebook] handleOpenURL:url];
}

我知道在xib中这些方法应该是:

   - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [[_ViewController facebook] handleOpenURL:url];
}

// For iOS 4.2+ support
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [[_ViewController facebook] handleOpenURL:url];
}

这些方法负责为当前“facebook”实例 (Facebook *facebook) 弹出一个提要对话框。

我的问题是,在 Storyboard 中我们没有“窗口”和 View Controller 实例,所以我猜测这两个方法没有被我当前的 viewController 的“facebook”实例调用。我如何为我的“facebook”实例调用这两个函数,其中我的 viewController 不是 AppDelegate 文件的实例?

请帮帮我。

最佳答案

在使用 Facebook(或调用这些委托(delegate)函数)之前,您可以在应用委托(delegate)的 _viewcontroller 中传递您的 View Controller 的引用。

您的 View Controller 的 viewdidload() 将如下所示:

-(void)viewDidLoad{ 



[[UIApplication sharedApplication] delegate]._viewComtroller = self; // pass reference to the appdalegate



// Other code (or call the facebook function here)

它会起作用

关于objective-c - 在 ios xcode 4.3( Storyboard)中弹出 facebook 提要对话框(用于墙贴),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10011465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com