我正在尝试将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',原因:'应用程序试图呈现一个 nil模态视图控制器在目标上。'
在app委托中我有:
[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非常困惑,所以请耐心等待我。提前谢谢。
答案 0 :(得分:0)
通常导致ViewController为nil的是它未被初始化。虽然我可以在你的代码中看到你已经在这里完成了这个:
- (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;
}
希望情况确实如此!