2016-02-12 3 views
0

Я читал о потоке стеков, а также в Интернете. Это может быть мое ограниченное знание, что я не могу найти способ решить эту проблему. Ниже приводится моя настройка раскадровки. enter image description hereНастройка делегата, когда пункт назначения не является UIViewController

Ради понимания позволяет называть их firstVC secondPageVC и thirdTableVC я в основном показывая pageViewController в виде контейнера, где вид страницы контроллер INTURN имеет Tableview. У моей первой сцены в рассказной доске есть метод, который извлекает данные через Интернет. Мне нужно передать эти данные таким образом, чтобы моя таблица была заполнена.

С моими исследованиями и испытаниями, которые я нашел. PrepareForSegue в FirstVC - это вызов сразу, поскольку containerView необходимо заполнить содержимым, которое является inturn - pageViewController. Как только secondPageVC Load, ему нужно найти свой контроллер просмотра запуска. Как только secondPageVC загрузится, он пытается загрузить thirdTableVC.

Я написал протокол в firstVC, так что я могу передать данные, когда его получить обновлено. Я настолько тупик, что диспетчер View должен быть делегирован или соответствовать этому протоколу. Я пытаюсь сделать secondPageVC для соответствия этому протоколу следующим VC, где контроллер проходит и первый логический выбор. но как установить делегат, если я не использую prepareForSegue. Я не могу использовать prepareForSegue, поскольку destinationViewController должен быть UIViewController.

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

Обновление: Спасибо людям, которые ответили. Их мысль породила во мне сомнение. То, что я пытаюсь сделать. Это хорошее решение. Как одно предложение со стороны иметь уведомления. Какой вызывающе может быть другой подход.

+0

Я не понимаю, что вы подразумеваете, не имея возможности использовать prepareForSegue, но это, возможно, не лучший вариант для протокола. Контроллер верхнего уровня может находить вид таблицы просто, идя по иерархии диспетчера просмотров. Vc1 имеет ссылку на константу, которая ссылается на представление страницы, которая ссылается на представление таблицы, или вы можете установить свойство делегата в первом prepwForSegue и передать его в следующем, хотя это немного уродливо. Я бы, вероятно, просто использовал NSNotification для информирования о представлении таблиц новых данных – Paulw11

ответ

0

Когда вы думаете о делегировании, вам нужно знать, какие объекты необходимо обновить. Независимо от того, что нужно обновить, когда что-то изменится, должен быть делегат. Все, что собирается сделать обновление, должно иметь свойство делегата.

В этом конкретном случае, поскольку ваш firstVC собирается выполнить обновление, он должен быть объектом, обладающим свойством делегирования.

Вы можете использовать prepareForSegue без проблем. Да, destinationViewController будет иметь тип UIViewController, но вы знаете, что это будет ваш тип контроллера вашего вида, пока segue - это то, о чем вы думаете. Вы можете просто ввести destinationViewController в правильный тип, а затем установить свойство delegate.