Нажатие нового экземпляра себя на странность навигационного контроллера

Хорошо, потерпи меня. У меня есть приложение IOS на основе раскадровки, которое:

  1. Оформлен как главная навигация TabBar. Одна вкладка переходит в NavigationController. Отлично.
  2. В главном представлении навигационного контроллера у меня есть CollectionController, тоже хорошо.
  3. При выборе элемента коллекции я «нажимаю» (из другой раскадровки) UIViewController, который работает как шарм.
  4. Из UIViewController, в зависимости от действий пользователя, я перехожу ко второму UIViewController.
  5. Из второго UIViewController, в зависимости от действий пользователя, я пытаюсь отправить новый экземпляр второго UIViewController (в основном сам, даже если я создаю новый пустой экземпляр из раскадровки).

Когда я это делаю, я попадаю в контроллер представления, указанный в пункте 3 выше.

Я думаю, это связано с переходом от № 4 к № 4, нажимая с помощью навигационного контроллера. Кто-нибудь?

ТИА Франк


person Frank C.    schedule 28.04.2013    source источник
comment
Как вы продвигаете этот новый экземпляр себя? Как вы установили это в раскадровке? Вы сделали новую сцену того же класса, что и я?   -  person rdelmar    schedule 28.04.2013
comment
Когда я получаю событие, я нахожу раскадровку и :code[раскадровка instanceViewControllerWithIdentifier:@DetailEditController];code   -  person Frank C.    schedule 28.04.2013
comment
Но тот ли это идентификатор, который был у вас при первом нажатии этого контроллера, или это отдельная сцена с другим идентификатором?   -  person rdelmar    schedule 28.04.2013
comment
Тот же идентификатор. В основном я хочу повторно использовать поведение текущей сцены/контроллера, так как все это управляется данными.   -  person Frank C.    schedule 28.04.2013
comment
Я нашел проблему. У меня была логика в представленииWillDisappear, которая предполагала, что она будет единственной и будет выполняться и разворачиваться.   -  person Frank C.    schedule 29.04.2013


Ответы (1)


Я не думаю, что вы не должны делать это таким образом. Вы можете либо использовать откат, чтобы вернуться к этому контроллеру, либо сделать popToViewController:animated: в коде, чтобы вернуться к этому контроллеру. Это вернется к тому же экземпляру этого контроллера, который может быть не тем, что вы хотите.

Если вам действительно нужен новый экземпляр, вы должны создать новую сцену в раскадровке. Вы можете создать эту новую сцену, скопировав и вставив ее в уже имеющуюся — таким образом, она будет иметь тот же вид. После того, как вы скопируете и вставите его, вы можете переместить его в нужное место, присвоить ему новый идентификатор и подключить его новый переход.

person rdelmar    schedule 28.04.2013