我正在尝试将Facebook添加到我的应用程序中,这是我在视图控制器中所做的:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
self.loginViewController = [[PFLogInViewController alloc] init];
[self.loginViewController setDelegate:self];
[self.loginViewController setFields:PFLogInFieldsFacebook];
[self.loginViewController setFacebookPermissions:[NSArray arrayWithObjects:@"user_about_me", nil]];
}
return self;
}
- (IBAction)faceBookLoginPressed:(id)sender {
[self presentViewController:self.loginViewController animated:NO completion:NULL];
}
这会导致应用程序崩溃,我得到这个:
由于未捕获的异常而终止应用 "NSInvalidArgumentException",原因:"应用程序试图呈现 目标上的模式视图控制器为零。
在应用程序代表中,我有:
[Parse setApplicationId:@“********************************************"
clientKey:@"********************************************"];
[PFFacebookUtils initializeFacebook];
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [FBAppCall handleOpenURL:url sourceApplication:sourceApplication];
}
这就是我迈出第一步的全部内容。我要做的就是让我的应用程序转到网络并让我像这样登录Facebook:
https://www.parse.com/tutorials/scrumptious
到目前为止,我对 Parse 非常困惑,所以请耐心等待我。提前谢谢。
通常导致视图控制器为零的原因是它没有被初始化。虽然我可以在你的代码中看到你已经在这里完成了:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
self.loginViewController = [[PFLogInViewController alloc] init];
[self.loginViewController setDelegate:self];
[self.loginViewController setFields:PFLogInFieldsFacebook];
[self.loginViewController setFacebookPermissions:[NSArray arrayWithObjects:@"user_about_me", nil]];
}
return self;
}
问题是,我认为只有当你有笔尖时才会这样称呼。如果我错了,请纠正我。因为我在您的代码中看不到任何其他错误。我将假设您正在使用故事板。如果是这种情况,请替换此内容:
- (IBAction)faceBookLoginPressed:(id)sender {
[self presentViewController:self.loginViewController animated:NO completion:NULL];
}
有了这个
- (IBAction)faceBookLoginPressed:(id)sender {
self.loginViewController = [[PFLogInViewController alloc] init];
[self.loginViewController setDelegate:self];
[self.loginViewController setFields:PFLogInFieldsFacebook];
[self.loginViewController setFacebookPermissions:[NSArray arrayWithObjects:@"user_about_me", nil]];
[self presentViewController:self.loginViewController animated:NO completion:NULL];
}
并继续删除它:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
self.loginViewController = [[PFLogInViewController alloc] init];
[self.loginViewController setDelegate:self];
[self.loginViewController setFields:PFLogInFieldsFacebook];
[self.loginViewController setFacebookPermissions:[NSArray arrayWithObjects:@"user_about_me", nil]];
}
return self;
}
希望是这样!