2016-01-17 26 views
1

我正在使用以下方法两次登录和注册。所以有时候我会崩溃。这里是我的代码:更改取消VC到目前为止

- (void)signIn:(NSDictionary *)params { 
    [[PCUtilities sharedUtilities] showActivityControllerWithMessage:nil inController:self]; 

    [[PCWebServiceManager sharedWebServiceManager] signInWithParameters:params completionHandler:^(id responseObject, NSError *error) { 
     self.signInBtn.enabled = YES; 
//  [[PCUtilities sharedUtilities] hideActivityIndicator]; 

     if (error) { 
      [self forceLogout]; 

      [PCUtilities showAlertWithTitle:nil message:error.localizedDescription cancelButtonTitle:@"OK"]; 
      [[PCUtilities sharedUtilities] hideActivityIndicator]; 

     }else { 
      PCLoginObject *loginObject = (PCLoginObject *)responseObject; 
      [self dismissViewControllerAnimated:NO completion:^{ 
       [self performSelector:@selector(handleSignInResponse:) withObject:loginObject afterDelay:0.2]; 
      }]; 
     } 
    }]; 

} 

在上面的代码中,我用这个方法,两个时间在两个不同的类别,因此,如果可能的任何一个可以帮助我从dismissviewcontroller以下行改为presentViewcontroller

[self dismissViewControllerAnimated:NO 
         completion:^{ 
          [self performSelector:@selector(handleSignInResponse:) 
             withObject:loginObject 
             afterDelay:0.2]; 
         }]; 

我使用上面的方法两次。所以根据崩溃报告,我需要将任何一种方法更改为present view controller。我尝试过但没有成功。

+0

有什么错误? – Avi

+0

由于未捕获异常'NSInvalidArgumentException'而终止应用程序,原因:'When | allowedSignInWithWebView |启用时,uiDelegate必须是| UIViewController |或实现| signIn:presentViewController:|和| signIn:dismissViewController:|来自| GIDSignInUIDelegate |。'的方法这是ereo – user5513630

+1

为什么不是这个问题中的信息? – Avi

回答

0

尝试设置

[GIDSignIn sharedInstance].delegate = self; 

在viewDidAppear方法,而不是在viewDidLoad中

+0

我在这两个类中有两个类'login.m'和'signup.m',我必须添加上面的代码? – user5513630

+0

@metronic:为什么它应该被添加到viewDidAppear –

1

尝试增加这个方法,这帮助我在我的情况下,当我得到这个警告

//编译mark - Google SignIn Delegate

- (void)signInWillDispatch:(GIDSignIn *)signIn error:(NSError *)error { 

} 

//呈现一个视图,提示用户与谷歌

- (void)signIn:(GIDSignIn *)signIn presentViewController:(UIViewController *)viewController 
{ 
    [self presentViewController:viewController animated:YES completion:nil]; 
} 

登录//辞退了 “在与谷歌” 的看法

- (void)signIn:(GIDSignIn *)signIn dismissViewController:(UIViewController *)viewController { 
    [self dismissViewControllerAnimated:YES completion:nil]; 

} 

//完成登录

- (void)signIn:(GIDSignIn *)signIn didSignInForUser:(GIDGoogleUser *)user 
    withError:(NSError *)error { 
//user signed in 
//get user data in "user" (GIDGoogleUser object) 
} 
+0

将检出.. – user5513630

+0

实际上你的最后一个代码//已完成签署委托我已经。而在我上面的代码中,我发布了一个方法将在'google plus'委托之后调用。在那个方法中,我也有一些方法会调用..所以为了调用另一种方法我将如何使用本和解雇视图控制器 – user5513630

+0

看到我解雇VC代码里面,我打电话'handlesigninresponse'所以如何添加方法在你现在的VC代码?/ – user5513630