2014-02-01 3 views
-1

Просто у вас есть проблема и «промах» в моей «емкости» программирования. У меня есть контроллер Tableview с некоторыми данными, обработанными json. Когда вы выбираете «новости», вы должны перейти к подробному представлению со всеми данными в нем.Перенаправление на контроллер определенного вида

Все в порядке, но я добавляю «чек» Если вы вошли в систему или нет. И если вы не перенаправлены на экран входа в систему.

Я пытаюсь сделать это с помощью segue (модального). Он работает, но когда я это делаю, моя «навигация» нарушается, как если бы он «потерял» свой путь.

Storyboard

Я пытаюсь сделать это программно, как:

LoginViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"LoginViewController"]; 
[self.navigationController pushViewController:controller animated:YES]; 

Но когда я делаю это так, ничего не случится, моя «детальный вид контроллера» нагрузка без перенаправления

и получил этот журнал:

Вложенная анимация push может привести к повреждению навигационной системы n bar Завершение переход на навигацию в непредвиденном состоянии. Панель навигации может быть повреждена.

У кого-нибудь есть подсказка для меня? Thanks

ответ

0

Это не обычный способ сделать это. Обычно вы представляете этот контроллер входа в систему.

Если это именно так, как вы хотите, вы можете сделать это, используя следующие шаги:

1) Подключите ваш DetailViewController к вашему TableViewController (не из самой клетки, но от этого желтого значка, которое представляет ViewController в нижняя черная полоса). Выберите push, если хотите, и добавьте идентификатор в этот Segue (например, «DetailSegue»)

2) Подключите свой LoginViewController к TableViewController так же, как вы подключили свой DetailViewController и добавили идентификатор к этому сегменту (например, LoginSegue ").

Теперь, когда пользователь нажимает на некоторую клетку, вы хотите проверить, если сессия все еще активна, если вы будете делать [self performSegueWithIdentifier:@"DetailSegue" sender:self];, и если это не так, вы будете делать [self performSegueWithIdentifier:@"LoginSegue" sender:self];

Надеются, что это помогает, веселит.

+0

Спасибо, что я сделал трюк! Просто нужно взглянуть, почему мой статус-бар исчезает на «подробном представлении», но, похоже, легко и легко. Спасибо – Mitchum

0

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

Если вы хотите установить ссылку на сцену в своем раскадровке, создайте для этого шаг ctrl + click & перетащите из начальной сцены, затем дайте segue ID (сделайте это, нажав на сегмент и используя инспектор установить ID)

затем в контроллере Tableview, где когда-либо вы собирание вкладки (при условии, что это в методе TableView делегата) вы можете вызвать SEGUE программно

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
[self performSegueWithIdentifier:@"YOURSEGUEID" sender:self]; 
} 
+0

Спасибо, я сделал что-то вроде этого – Mitchum

1

вы делаете это все не так. вам нужно изучить саму базовую программу программирования (раскадровку). follow this link

LoginViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"LoginViewController"]; 
[self.navigationController pushViewController:controller animated:YES]; 

в раскадровке у вас уже есть толчок SEGUE, & вы снова подталкивают loginviewcontroller. вот почему вы получаете предупреждение «вложенной push-анимации».

+0

Очень полезная ссылка, спасибо! – Mitchum

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