2015-03-20 3 views
0

Я работаю над частью регистрации пользователя приложения iOS, и я пытаюсь использовать просмотры страниц, чтобы получить пользовательский ввод. Таким образом, первое представление страницы принимает имя пользователя, а следующее принимает имя, телефонный номер. Затем пользователь получает код подтверждения, который вводится пользователем в следующем представлении страницы. Только когда код подтверждения верен, пользователю разрешено перейти (перейти вправо) к следующему просмотру страницы.Использование UIPageViewController для регистрации пользователя

Проблема, с которой я сталкиваюсь, заключается в том, что я не могу уловить вход пользователя в свойствах моего контроллера представления, который происходит из UIPageViewController.

Я использую:

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController { 
NSUInteger index = [(SignupChildViewController *)viewController index]; 

    SignupChildViewController *current=(SignupChildViewController *)viewController; 

    NSLog(@"%@", current.userCredentials.text); 

    if(index==3) 
    { 
     firstPass=YES; 
     if([verificationCodeUser isEqualToString:verificationCode]) 
     { 
      verificationPassed=YES; 
      index++; 
     } 
     else 
     { 
      UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"Oh snap!" message:@"You haven't entered the correct verification code." delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil]; 
      [alert show]; 
      return [self viewControllerAtIndex:index]; 
     } 
    } 
    if(index==3) 
    { 
     firstPass=YES; 
    } 


    index++; 

    if (index == 6) { 
     return nil; 
    } 

    [self updateInfo:index]; 
    return [self viewControllerAtIndex:index]; 
} 

Метод updateInfo выглядит примерно так:

(void)updateInfo:(NSInteger)ind 
{ 


    switch ([ind integerValue]) 
    { 
     case 0: 
      firstName=textview.text; 
      break; 
     case 1: 
      lastName=textview.text; 
      break; 
     case 2: 
      phoneNumber=textview.text; 
      break; 
     case 3: 
      verificationCodeUser=textview.text; 
      break; 
     case 4: 
      birthday=textview.text; 
      break; 
     case 5: 
      password=textview.text; 
      break; 
    } 
} 

Здесь на основе индекса страницы, соответствующее свойство устанавливается. Но проблема в том, что свойство иногда устанавливается корректно, но иногда оно просто получает пустую строку в текстовом виде, даже если пользователь ввел строку. Как захватить пользовательский ввод при просмотре страниц?

ответ

0

viewControllerAfterViewController: - плохое место для звонка updateInfo:, потому что вы предполагаете, что вы уже перешли к этому индексу, когда это может быть не так. viewControllerAfterViewController: можно назвать в случаях, отличных от успешного перехода.

Вместо этого попробуйте обновить информацию во время методов UIPageViewControllerDelegatepageViewController:didFinishAnimating:previousViewControllers:transitionCompleted: или pageViewController:willTransitionToViewControllers:, чтобы вы точно знали, что представление перешло или перейдет.

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