2013-09-24 4 views
0

Я пишу приложение iPhone, используя раскадровки для первоначального макета. Проблема, с которой я сейчас сталкиваюсь, заключается в переключении контроллеров.Данные исчезают при переключении между диспетчерами вида

У меня есть контроллер табличного представления и другой контроллер вида. Все, что я хочу сделать, это использовать кнопку «Назад», чтобы вернуться к исходному экрану, и я могу это сделать, за исключением того, что данные исчезают. Ниже представлена ​​раскадровка, которая у меня есть. enter image description here

У меня есть кнопка Назад, возвращающаяся к исходному навигационному контроллеру. Я также возвратился к контроллеру карты.

У меня есть жестко закодированные некоторые примеры ячеек, чтобы просто посмотреть, как выглядят вещи, и они отображаются очень хорошо, когда я запускаю симуляцию. Однако, когда я нажимаю кнопку «Назад», она возвращается к экрану «Все карты», а ячейки, которые там были, исчезли.

Если мне нужно опубликовать некоторый код, просто спросите, какая часть была бы полезной, я все-таки сделал это через раскадровки.

Я уверен, что это что-то глупое, что я сделал, любая точка в правильном направлении была бы очень признательна.

ответ

0

В основном: вы нажали туда, где должны были выскочить.

То, что вы видите на раскадровке, пока не существует. Посредством segue-waying во время выполнения к контроллеру представления он получает экземпляр.

Когда вы непосредственно перейти-wayed во время выполнения из Добавить карты контроллера вид «обратно» в карты View Controller в - вот что получилось: вместо того, чтобы хлопать навигационный стек весь путь обратно в карту Просмотреть Контроллер у вас уже был, вы просто создали новый Card View Controller и перетащили его в стек навигации. Вы можете убедиться, что, возвращаясь к исходному Card View Controller, коснувшись кнопки «Назад» несколько раз.

Что вы могли бы сделать, чтобы выполнить задание заключается в следующем: Вместо того, чтобы использовать раскадровку для вашей кнопки задней пользования IBAction в коде:

- (IBAction)popToRoot:(id)sender { 

    [self.navigationController popToRootViewControllerAnimated:YES]; 

} 
+0

Ач. Это имеет смысл. Я даже об этом не думал. Так происходит с первой попыткой раскадровки. Боковой вопрос: нужен ли мне класс для каждого контроллера вида, который у меня есть? т. е. у меня есть вид «Домой» и добавьте вид карты здесь, и у меня будет еще два вида. Нужны ли каждому классу контроллера вида и его собственный контроллер управления? – zburns12

+0

Моя ошибка. Я не выглядел достаточно близко на снимке экрана. 1) Вам нужен только один контроллер навигации. 2) Любой контроллер просмотра в раскадровке уже имеет класс (т. Е. UIViewController). Вам нужно только указать ему собственный класс, если вы хотите добавить функциональность (например, IBAction в коде). – Jarig

+0

Чтобы получить «глубже» в вашем стеке навигации, просто подключите контроллеры содержимого через push-сег. Чтобы вернуться к контроллеру корневого представления, используйте упомянутый IBAction. – Jarig

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