1

У меня есть контроллер табличного представления, встроенный в контейнер в контроллере вида.prepareForSegue не вызывается в embedded segue

Как в представлении, так и в контроллере представления таблиц prepareForSegue метод Я устанавливаю NSLog (@ "имя контроллера") Я вижу журнал для контроллера вида, но не контроллер табличного представления. Должен ли я также видеть nslog для подготовки таблицы подготовки к таблице?

enter image description here

+0

Вы должны увидеть журнал в классе контроллера табличного представления, но только после того, как вы выполните segue (прикосновением к ячейке, если это то, где вы сделали segue). – rdelmar

+0

Возможный дубликат [Использование вида контейнера в качестве панели инструментов] (http://stackoverflow.com/questions/25664299/using-container-view-as-a-dashboard) – Fattie

+0

- это просто ........ http ://переполнение стека.com/a/25991836/294884 – Fattie

ответ

1

в журнале кадров View Controller prepareForSegue будет называться непосредственно после initWithCoder: подготовить TableViewController. Я не вижу связи между контроллером табличного представления и другим видом (вид справа), но я считаю, что он будет вызываться, когда вы нажмете на строку.

// EXTENDED

Другое дело, может быть, что вы не добавить UINavigationController на иерархии представлений и вы создали свой стиль SEGUE для «проталкивания». Попробуйте изменить стиль вашего segue на «modal» в инспекторе атрибутов. Надеюсь, что эта помощь.

+0

Привет, Грег, есть связь между контроллером табличного представления и другими представлениями справа, но я не знаю Когда я попадаю в строку, не вижу журнал для prepareForSegue. –

+0

Это произошло потому, что вы управляете перетаскиванием из контроллера табличного представления в другой контроллер представления. Вы должны контролировать серый цвет от ROW до другого VC. Удалите этот сегмент и повторите попытку. – Greg

+0

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

13

Ровно - как объясняет Грег, то встраивать тип Segue является

вызывается только во время установки!

Это очень сбивает с толку. Можно сказать, что

«prepareForSegue» - ДЕЙСТВИТЕЛЬНО НЕПРАВИЛЬНОЕ ИМЯ!

названия «готовятся к Segue» имеет смысл только в (редком!) Случае, когда вы на самом деле «segueing» от одной сцены к другим

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

Итак, «prepareForSegue» следует называть чем-то вроде «эй, мы настраиваем все виды вашего контейнера - вы можете получить любую информацию, которая вам нужна в это время!»

Это всего лишь одна из тех странных вещей, которые вы знаете о iOS, но нигде не объясняется.

Вот полное объяснение с помощью представлений контейнера для начинающих https://stackoverflow.com/a/23403979/294884

0

Я провел некоторое время, читая эти длинные ответы о всем это. Вот короткий ответ:

prepareForSegue: не вызывается для установки сдерживания в IB. В качестве контроллеров детского вида добавляются встроенные контроллеры представлений. Вы можете просто посмотреть в self.childViewControllers по тому, который вы хотите.

+0

Это неправда, 'prepareForSegue:' вызывается для viewControllers, которые были добавлены с помощью 'Container view'. Если вы установили ID для вставки segue, вы можете определить segue и получить контроллер просмотра с помощью 'destinationViewController' – DanSkeel

+0

Вправо. вот простой код, чтобы сделать это http://stackoverflow.com/a/25991836/294884 – Fattie

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