2015-03-25 2 views
0

У меня есть раскадровка с ViewController и внутри ViewController У меня есть UICollectionView с прототипом ячейки.Xamarin iOS: Как подключить представление из раскадровки к контроллеру?

У меня уже есть «MyCollectionViewController» (потому что я пытаюсь обернуть свой CollectionViewController в ViewController). Теперь я хочу повторно использовать этот контроллер, но я не могу понять, как подключить CollectionView из раскадровки с помощью нового CollectionViewController. Назначение CollectionView из CollectionViewController в Outlet в ViewController не работает.

Я знаю, что могу создать прототип ячейки .xib-файла и создать CollectionView в коде. Но мой работодатель предпочитает иметь все в раскадровке для более легкого обслуживания.

EDIT: Ответ от chkn отлично работает. Чтобы подключить родительский контроллер представления к контейнеру, вы можете переопределить метод PrepareSegue следующим образом.

public override void PrepareForSegue (UIStoryboardSegue segue, NSObject sender) 
    { 
     base.PrepareForSegue (segue, sender); 
     if (segue.SourceViewController == this) { 
      if (segue.DestinationViewController.GetType() == typeof(MyChildViewController)) { 
       MyChildViewController childViewController = segue.DestinationViewController as MyChildViewController; 
      } 
     } 
    } 

ответ

1

Вы не можете назначить представление с одного контроллера вида в розетку на другом контроллере.

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

Просто создайте контроллер вида, в котором находится UICollectionView (легко использовать UICollectionViewController, но это не имеет значения). Затем на каждом контроллере представления вы хотите встроить его, перетащите Container View из панели инструментов и удалите контроллер представления по умолчанию, который поставляется вместе с ним. Затем, Ctrl + перетащить из представления контейнера в общий контроллер UICollectionView, который вы хотите внедрить.

Ваш раскадровка может выглядеть примерно так:

Screenshot

Этот пример можно найти здесь:
https://github.com/chkn/StoryboardExamples/tree/master/CollectionViewReuse

+0

Это похоже на правильный подход к моей проблеме, спасибо! Я отпущу вас, если я смогу заставить его работать. – Superwayne

+0

Он отлично работает, и я могу даже повторно использовать мой предыдущий CollectionViewController. – Superwayne

+0

Только одно, что я не понимаю: Как получить встроенный контроллер? Мне нужно передать переменную во встроенный контроллер представлений, прежде чем я вытащу родительский контроллер представления в стек навигации. – Superwayne

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