我正在尝试制作一个标签栏应用程序,首先我遵循了这个Facebook grap api 教程,当我触摸登录时,我的项目运行良好,如图所示,显示弹出窗口
之后我只添加了一个标签栏,我迷路了,没有错误,但程序没有启动 facebook 登录显示。我已经使用断点来理解为什么程序没有启动 facebook 登录显示但无法理解,因为它只是没有错误。它必须是带有标签栏的东西。
现在它的程序卡在弹出 facebook 登录显示
我的应用程序委托.h
#import <UIKit/UIKit.h>
@class FBFunMe;
@interface FBFunAppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
UITabBarController *rootController;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UITabBarController *rootController;
@end
应用委托.m
#import "FBFunAppDelegate.h"
#import "FBFunMe.h"
#import "FBFunLoginDialog.h"
@implementation FBFunAppDelegate
@synthesize window = _window;
@synthesize rootController;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
[self.window addSubview:rootController.view];
[self.window makeKeyAndVisible];
return YES;
}
我知道其余代码可以正常工作,因为我有一个相同的项目,没有标签栏可以正常工作。
有什么建议或示例代码可以让它工作吗?
_____ - - - - - -编辑 - - - - - - ________
在应用程序委托中,当我尝试此代码时,它会显示我需要的 FBFunLoginDialog,但我仍然需要在我的登录按钮中而不是在
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
因为我为了登录 Facebook 调用了一些变量和 appID 和人员
FBFunLoginDialog *loginController=[[FBFunLoginDialog alloc] init];
[self.window addSubview:rootController.view];
[self.rootController presentModalViewController:loginController animated:YES];
[window makeKeyAndVisible];
return YES;
在 FBFunMe.h
@interface FBFunMe :UIViewController <FBFunLoginDialogDelegate,UITextFieldDelegate> {
FBFunLoginDialog *_loginDialog;
UIView *_loginDialogView;
}
在FBFunMe.M
- (IBAction)loginButtonTapped:(id)sender {
NSString *appId = @"3888888883";
NSString *permissions = @"publish_stream";
if (_loginDialog == nil) {
self.loginDialog = [[[FBFunLoginDialog alloc] initWithAppId:appId
requestedPermissions:permissions delegate:self] autorelease];
self.loginDialogView = _loginDialog.view;
}
if (_loginState == LoginStateStartup || _loginState == LoginStateLoggedOut) {
_loginState = LoginStateLoggingIn;
[_loginDialog login];
} else if (_loginState == LoginStateLoggedIn) {
_loginState = LoginStateLoggedOut;
[_loginDialog logout];
}
[self refresh];
}