2014-01-09 2 views
0

В моем приложении я загрузил контроллер таблеток при запуске приложения. На этом я представляю страницу входа и когда пользователь вошел в систему, я увольняю эту страницу входа. Поэтому при запуске приложения будет страница входа в систему. Теперь на этой странице входа у меня есть одна кнопка. Кнопка Thar представляет страницу регистрации на странице входа. И всякий раз, когда пользователь заполняет рег. Я просто увольняю только рег. страница с страницы входа. Теперь в моем приложении. Я отправляю одно сообщение пользователю, которое содержит ссылку, которая перенаправляет пользователя в мою учетную запись. стр. Поэтому, когда пользователь будет перенаправлять, я хочу показать ему прямо reg. страницы на странице входа. Для этого я написал код, но он показывает только страницу входа и когда я регистрирую некоторое значение reg. страница также печатает это значение, но только показывает страницу ведения журнала. Если я сначала отклоню страницу регистрации, а затем отправлю рег. страницы на вкладке, тогда он работает нормально, но, как я сказал, прежде чем я хочу перенаправить пользователя на страницу входа после reg. стр. Мой код. ::Перенаправить пользователя в мое приложение из браузера

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { 
NSString *urlString=[url absoluteString]; 
NSLog(@"string%@",urlString); 
NSRange r = [urlString rangeOfString:@"myApp" options:NSCaseInsensitiveSearch]; 

if(r.location != NSNotFound){ 
    NSLog(@"founddddd"); 
    NSLog(@"MyApp url %@",url); 
    //NSString *str=[url valueForKey:@"email"]; 
    NSArray *query = [[url query] componentsSeparatedByString:@"&"]; 
    NSMutableDictionary *parameters = [NSMutableDictionary dictionaryWithCapacity:[query count]]; 
    for(NSString *parameter in query) 
    { 
     NSArray *kv = [parameter componentsSeparatedByString:@"="]; 
     [parameters setObject:[kv count] > 1 ? [[kv objectAtIndex:1] stringByReplacingPercentEscapesUsingEncoding:NSISOLatin1StringEncoding] : [NSNull null] 
         forKey:[[kv objectAtIndex:0] stringByReplacingPercentEscapesUsingEncoding:NSISOLatin1StringEncoding]]; 
    } 

    NSLog(@"Parameters: %@", parameters); 



    RegistrationViewController *RegistrationVC=[[RegistrationViewController alloc] initWithNibName:@"RegistrationViewController" bundle:[NSBundle mainBundle]]; 

    NSLog(@"q = %@", [parameters objectForKey:@"email"]); 

     RegistrationVC.fromBrowser=TRUE; 
    [loginVC presentViewController:RegistrationVC animated:NO completion:^{ 
     NSLog(@"txtemail %@ value%@",RegistrationVC.txtEmail,RegistrationVC.txtEmail.text); 
     RegistrationVC.txtEmail.userInteractionEnabled=NO; 
     RegistrationVC.txtEmail.text=[parameters objectForKey:@"email"]; 
     RegistrationVC.btnServiceProvider.hidden=YES; 
     RegistrationVC.lbl_create.hidden=YES; 

    }]; 


    return YES; 

} 
    return NO; 
    } 

Здесь loginVC я распределение в то время, когда я представляю страницу входа на мой tabbar.And я получаю это в моем журнале ::

Warning: Attempt to present <RegistrationViewController: 0xd8699c0> on <LoginViewController: 0xdd51a00> whose view is not in the window hierarchy! 
+0

Я предполагаю, что это не правильный подход, есть более эффективные способы аутентифицировать пользователя – Retro

+0

вы можете предложить мне ??? – vivek

ответ

0

Заменить код с этим

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { 
NSString *urlString=[url absoluteString]; 
NSLog(@"string%@",urlString); 
NSRange r = [urlString rangeOfString:@"myApp" options:NSCaseInsensitiveSearch]; 

if(r.location != NSNotFound){ 
    NSLog(@"founddddd"); 
    NSLog(@"MyApp url %@",url); 
    //NSString *str=[url valueForKey:@"email"]; 
    NSArray *query = [[url query] componentsSeparatedByString:@"&"]; 
    NSMutableDictionary *parameters = [NSMutableDictionary dictionaryWithCapacity:[query count]]; 
    for(NSString *parameter in query) 
    { 
     NSArray *kv = [parameter componentsSeparatedByString:@"="]; 
     [parameters setObject:[kv count] > 1 ? [[kv objectAtIndex:1] stringByReplacingPercentEscapesUsingEncoding:NSISOLatin1StringEncoding] : [NSNull null] 
         forKey:[[kv objectAtIndex:0] stringByReplacingPercentEscapesUsingEncoding:NSISOLatin1StringEncoding]]; 
    } 

    NSLog(@"Parameters: %@", parameters); 



    [self performSelector:@selector(gooRegestraction) withObject:nil afterDelay:0.3]; 

    return YES; 

} 
    return NO; 
    } 

-(void)gooRegestraction{ 

RegistrationViewController *RegistrationVC=[[RegistrationViewController alloc] initWithNibName:@"RegistrationViewController" bundle:[NSBundle mainBundle]]; 

    NSLog(@"q = %@", [parameters objectForKey:@"email"]); 

     RegistrationVC.fromBrowser=TRUE; 
    [[[UIApplication sharedApplication]keyWindow].rootViewController presentViewController:RegistrationVC animated:YES completion:^{ 
    RegistrationVC.txtEmail.userInteractionEnabled=NO; 
    RegistrationVC.txtEmail.text=[parameters objectForKey:@"email"]; 
    RegistrationVC.btnServiceProvider.hidden=YES; 
    RegistrationVC.lbl_create.hidden=YES; 

}]; 

} 
+0

нерабочий ..... – vivek

+0

какая ошибка, которую вы получаете ..? –

+0

Я не получаю никакой ошибки ... просто его показать мне страницу входа, а не рег. страница – vivek

Смежные вопросы