2013-12-06 3 views
0

Я новичок в разработке iOS, и я использую parse.com в качестве моего бэкэнда. Я хочу перейти от [View Controller 2] to [view Controller 3] , но не работает правильно. Вот код http://i.stack.imgur.com/t6zZg.jpgКак перемещаться с помощью popViewController

NSString *username = [self.usernameField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 

NSString *password = [self.passwordField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 


NSString *email = [self.emailField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 

if ([username length] == 0 || [password length] == 0 || [email length] == 0){ 

    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Oops!" message:@"Make sure you enter a username, password , and email address!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 

    [alertView show]; // This help to show your message successfully! 
} 
else { 
    PFUser *newUser = [PFUser user]; // This is a method to create new users 

    newUser.username = username; 

    newUser.password = password; 

    newUser.email = email; 

    [newUser signUpInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { 
     if (error) { 
      UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Sorry!" message:[error.userInfo objectForKey:@"error"] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil]; 

      [alertView show]; 

     } 
     else { 


    [self.navigationController popToViewController:_profilePhotoViewController animated:YES]; 


     } 

    }]; 
} 

} 
+0

Вы хотите нажать или поместить свой контроллер? –

+0

Что не работает? Вы представляете свой взгляд в моделях? – CaptJak

+0

Я хочу использовать popViewController @HaniIbrahim, пожалуйста, просмотрите ссылку на диаграмму раскадровки http://i.stack.imgur.com/t6zZg.jpg – user3075571

ответ

0

Согласно изображению, публикуемую, VC3 не отображается ни толкнул на контроллер перед отображением VC2

Этот метод popToViewController:animated: требует, чтобы контроллер отображается до и в стек контроллера для того, чтобы вытолкнуть стек обратно к нему

вы можете добиться того, что вы хотите от поп до корня, а затем нажать ваш взгляд

[self.navigationController popToRootViewControllerAnimated:NO]; 
[self.navigationController pushViewController:_profilePhotoViewController animated:YES]; 

Besure, что _profilePhotoViewController выделяется, прежде чем нажимать его

.

.


UPDATE

В раскадровку установлен идентификатор для вашего VC3 быть, например, «VC3Identifier»

Вы можете сделать это, как вы можете видеть на изображении ниже

  1. Выберите свой контроллер
  2. Показать у коммунальные услуги
  3. показать инспектору идентичности
  4. Put «VC3Identifier» в StoryBoard ID поля

enter image description here

Затем Вам нужно будет выделить новый экземпляр этого контроллера и добавить его в навигационном контроллере

YourController *vc3 = [self.storyboard instantiateViewControllerWithIdentifier:@"VC3Identifier"]; 
[self.navigationController setViewControllers:@[vc3] animated:YES]; 
+0

Спасибо. Я хочу попасть в View Controller 3 (Home), но он ведет меня на страницу приветствия. что мне делать? – user3075571

+0

Попробуйте этот код 'self.navigationController.viewControllers = @ [_ profilePhotoViewController];' но это не будет иметь анимации –

+0

Я попробовал это и получил это: *** Завершение приложения из-за неперехваченного исключения 'NSInvalidArgumentException', причина: '*** - [__ NSPlaceholderArray initWithObjects: count:]: попытаться вставить нулевой объект из объектов [0] '*** Первый стек вызовов броска: – user3075571

0

ОК, ну, я не совсем уверен, как работает ваш код и что вызовет изменение вида, но в вашем коде, где вы называете это:

[self.navigationController popToViewController:_profilePhotoViewController animated:YES]; 

Это то, что вам нужно для обработки (при условии, что profilePhotoViewController - VC3).

Перейдите на свою раскадровку и нажмите Ctrl + клик + перетащить из представления (VC, из которого вы начинаете), и закончите на VC 3. VC 3 должен загореться синим цветом. Отпустите, и вы увидите раскрывающееся меню. Выберите «Push». Это создаст переход для перехода. Затем вам нужно указать идентификатор, поэтому щелкните по выделенному сегменту и перейдите в Инспектор атрибутов и в поле «Идентификатор» в «ProfilePictureSegue», а затем нажмите «Ввод» (или возврат).

Затем перейдите к файлу, который содержит код, который вы отправлен и заменить

[self.navigationController popToViewController:_profilePhotoViewController animated:YES]; 

С:

[self performSegueWithIdentifier:@"ProfilePictureSegue"]; 

и Боб ваш дядя. Запустить его.

EDIT Я снова посмотрел на вашу фотографию, и похоже, что ваш VC3 находится не в том месте. Создайте сегмент от VC2 до VC 3, а не от контроллера навигации до VC3. Вызовите segue, как я объяснил выше, в файле VC2 .m, и он перейдет между ними.

Если вам нужно больше explanations.

+0

Спасибо, но я получил это ... Завершение приложения из-за неперехваченного исключения «NSInvalidArgumentException», причина: «Получатель () не имеет идентификатора с идентификатором« ProfilePictureSeque »... VC3 подключен к контроллеру навигации – user3075571

+0

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

+0

Что касается ошибки, правильное слово segue, NOT seque. Это «G». В противном случае вы либо не устанавливали идентификатор, либо идентификатор в коде не соответствовал идентификатору в сегменте. Где вы пытаетесь перейти на VC 3? Когда вы планируете поездку, вы не говорите авиакомпании «Я хочу поехать во Францию». Вы говорите: «Я хочу отправиться из Испании во Францию». Каков исходный момент? – CaptJak

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