-1
我很新的目標C.我跟着教程整合Facebook到iOS應用程序,沒有別的。當我添加註銷按鈕的代碼的東西后,我跑了它,它給了我一個錯誤在線: [self.viewController.view addSubview:logoutButton];
錯誤是「無法識別選擇器發送到實例0x6b6c550」。 我知道這可能是一個愚蠢的錯誤,但如果任何人都可以指出我錯在哪裏,我將非常感激!Facebook教程添加註銷按鈕,但空白屏幕
static NSString* kAppId = @"340105106048288";
// Method that gets called when the sign out button is clicked
- (void)logoutButtonClicked {
[facebook logout];
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions
(NSDictionary *)launchOptions
{
UIButton *logoutButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
logoutButton.frame = CGRectMake(40, 40, 200, 40);
[logoutButton setTitle:@"Log Out" forState:UIControlStateNormal];
[logoutButton addTarget:self action:@selector(logoutButtonClicked)
forControlEvents:UIControlEventTouchUpInside];
[self.viewController.view addSubview:logoutButton];
facebook = [[Facebook alloc] initWithAppId:kAppId andDelegate:self];
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"FBAccessTokenKey"] && [defaults
objectForKey:@"FBExpirationDateKey"]) {
facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
}
// This part, the authorize method will bring you to the authorization page
if (![facebook isSessionValid])
[facebook authorize:nil];
return YES;
}
// Pre iOS 4.2 support
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [facebook handleOpenURL:url];
}
// For iOS 4.2+ support
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
return [facebook handleOpenURL:url];
}
// Save the user credential, specifically the access token and the expiration date to the user defaults
- (void)fbDidLogin {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"];
[defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"];
[defaults synchronize];
}
- (void) fbDidLogout {
// Remove saved authorization information if it exists
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"FBAccessTokenKey"]) {
[defaults removeObjectForKey:@"FBAccessTokenKey"];
[defaults removeObjectForKey:@"FBExpirationDateKey"];
[defaults synchronize];
}
}
我剛剛創建了一個使用故事板的新項目。我沒有更改viewcontroller.h和.m文件中的代碼。我需要在那裏做任何事嗎?或者我應該添加一些更多的appDelegate文件?非常感謝你的幫助! –
您是否已將Facebook API集成到您的新項目中?在包含Facebook API之前和之後運行您的項目,並且不使用註銷按鈕。 無法識別的選擇器通常是由以下原因造成的: 1.對象的錯誤實例(例如控制器) 2.您的方法未被調用。可能是因爲你在使用IBAction,無法將它鏈接到你的對象。也可能是你在調用一個未聲明的方法或對象。 – Kimpoy
我已經包含了api,並且在註銷按鈕步驟之前一切正常。我也可以看到授權頁面。我只是按照教程中的步驟創建項目。在註銷按鈕步驟之前,我是否需要執行其他任何操作? –