2015-07-01 4 views
2

Я пытаюсь назначить два контроллера представлений в виде контейнера с помощью Interface Builder. Я пытался это сделать, но всякий раз, когда я пытаюсь «встроить» второй контроллер представления в мой контейнерный вид, вместо добавления к нему другого VC, он просто заменяет тот, который уже был встроен.Присвоение двух видов одному контейнеру с помощью swift в iOS 8

В конечном счете, моя главная цель состоит в том, чтобы иметь экран, который имеет следующие элементы (в порядке, сверху вниз):

-A панель навигации -A вид высоты 50, который содержит сегментированный контроллер (который будет переключаться между TableVC) -A основной вид, который будет содержать мой вид контейнера -A tabbed bar

Моя текущая установка почти такая же, как описано выше. Вот картинка: enter image description here

Контроллер вида, который меня интересует больше всего, находится в одном с выделенным контейнером (HomeViewController). Подход, который я использую в настоящее время, является взломанным, потому что в настоящее время у меня есть два вида контейнеров, один поверх другого, и они встроены в два контроллера табличного представления, изображенных справа (по одному на контейнер).

Мне очень не нравится этот подход, потому что оба контейнера получают экземпляр всякий раз, когда создается основной VC (Home View Controller), поэтому по умолчанию 2 сетевых вызова загружают их содержимое, возможно, замедляя работу устройства и, возможно, используя больше чем требуется.

В идеале я бы загрузил содержимое одного контроллера табличного представления, который сопоставлен с одним из сегментированных элементов управления. Тогда у меня будет механизм, который каким-то образом создает экземпляр второго контроллера табличного представления всякий раз, когда я перехожу ко второй кнопке в сегментированном элементе управления (и, возможно, освобождая/освобождая другие VC) и т. Д. С третьим. Или каким-то образом можно отображать/чередовать между 2 или более контроллерами представления в области (представлении) внутри моего HomeViewController.

В настоящее время у меня есть этот простой код, который переключается (Скрытие и отображение) между видами контейнеров в моем HomeViewController:

@IBAction func segmentChanged(sender: AnyObject) { 
     switch segmentedControl.selectedSegmentIndex{ 
     case 0: 
      println("index1 selected") 
      containerView1.hidden = false 
      containerView2.hidden = true 
      break 
     case 1: 
      println("index2 selected") 
      containerView1.hidden = true 
      containerView2.hidden = false 
      break 
     default: 
      containerView1.hidden = false 
      containerView2.hidden = true 
      break 
     } 
    } 

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

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

Благодарим за то, что вы прочитали мое сообщение и за ваш совет заранее.

Cheers!

ответ

0

Добавить embed segue в NavigationController, добавить ViewController как rootViewController в NavigationController, из rootViewController добавить столько раз, сколько пожелаете. Чтобы загрузить контроллер, вам нужно просто переопределить класс segue для перемещения без навигации.

class NoAnimationSegue: UIStoryboardSegue { 

override func perform() { 
    self.sourceViewController.navigationController?.pushViewController(self.destinationViewController, animated: false) 
} 

}

enter image description here

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

  • Нет связанных вопросов^_^