【问题标题】:Xamarin iOS: How to connect a view from a storyboard to a controller?Xamarin iOS:如何将故事板中的视图连接到控制器?
【发布时间】:2015-05-29 10:26:32
【问题描述】:

我有一个带有 ViewController 的情节提要,在 ViewController 内我有一个带有原型单元格的 UICollectionView。

我已经有一个“MyCollectionViewController”(因为我尝试将我的 CollectionViewController 包装在 ViewController 中)。现在我想重用该控制器,但我不知道如何将情节提要中的 CollectionView 与新的 CollectionViewController 连接起来。 将 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;
            }
        }
    }

【问题讨论】:

    标签: ios iphone xcode uiviewcontroller xamarin


    【解决方案1】:

    您不能将一个视图控制器中的视图分配到另一个视图控制器上的插座。

    但是,您可以拥有一个包含集合视图的视图控制器,然后使用容器视图将该视图控制器嵌入到其他视图控制器中。

    只需创建托管UICollectionView 的视图控制器(使用UICollectionViewController 很容易,但没关系)。然后在要嵌入的每个视图控制器上,从工具箱中拖出一个容器视图,并删除它附带的默认视图控制器。然后,从 Container View 中按住 Ctrl 并拖动到要嵌入的共享 UICollectionView 控制器。

    您的故事板可能如下所示:

    该示例可在此处获得:
    https://github.com/chkn/StoryboardExamples/tree/master/CollectionViewReuse

    【讨论】:

    • 这看起来是解决我的问题的正确方法,谢谢!如果我能让它工作,我现在就让你。
    • 完美运行,我什至可以重用我以前的 CollectionViewController。
    • 只有一件事我不明白:如何获得嵌入式控制器?在将父视图控制器推送到导航堆栈之前,我需要将变量传递给嵌入式视图控制器。
    • 我就是这么做的。在我的问题中添加了代码。
    猜你喜欢
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-17
    • 1970-01-01
    • 2018-01-01
    相关资源
    最近更新 更多