Как получить доступ к представлению контейнера из другого представления контейнера?

В моем коде в настоящее время у меня есть представление контейнера, в которое встроена ссылка на раскадровку. Эта раскадровка, на которую я ссылаюсь, содержит контроллер представления, внутри которого находятся два контейнерных представления.

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

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
    if segue.identifier == "showMetric" {
        guard let metricChildViewController = segue.destinationViewController as? MetricChildViewController else { return }
        var delegate: NewMetricDelegate!

        let type = MetricsType.watts
        let activityDelegate = NewActivityMetricDelegate(data: self.dataSet.dailySummary)
        activityDelegate.dailySummaryPresentationDelegate = metricChildViewController
        delegate = activityDelegate

        metricChildViewController.metricDelegate = delegate
        metricChildViewController.configure(type)
        //I want to gain access to the table view controller
    }
}

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

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

Это не похоже на лучший способ сделать это, поэтому мне было интересно, как мне это сделать.


person Faisal Syed    schedule 07.10.2016    source источник


Ответы (1)


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

person neprocker    schedule 07.10.2016