我有一个带有ViewController的故事板,在ViewController中我有一个带有原型单元格的UICollectionView。
我已经有一个" MyCollectionViewController" (因为我尝试将我的CollectionViewController包装在ViewController中)。现在我想重用那个控制器,但我无法弄清楚如何使用新的CollectionViewController连接故事板中的CollectionView。 将CollectionView从CollectionViewController分配给ViewController中的Outlet似乎无法正常工作。
我知道我可以将单元格原型设为.xib文件并在代码中创建CollectionView。但我的雇主更喜欢在故事板中放置所有内容以便于维护。
编辑: 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;
}
}
}
答案 0 :(得分:1)
您无法将视图从一个视图控制器分配到另一个视图控制器上的插座。
但是,您可以使用包含集合视图的单个视图控制器,然后使用容器视图将该视图控制器嵌入到其他视图控制器中。
只需创建托管UICollectionView
的视图控制器(它很容易使用UICollectionViewController
,但这并不重要)。然后在要嵌入的每个视图控制器上,从工具箱中拖动Container View并删除随附的默认视图控制器。然后,按住Ctrl键并从容器视图拖动到要嵌入的共享UICollectionView
控制器。
您的故事板可能如下所示:
这个例子可以在这里找到:
https://github.com/chkn/StoryboardExamples/tree/master/CollectionViewReuse