【问题标题】:Reuse View for different Controllers Best way为不同的控制器重用视图最好的方法
【发布时间】:2026-02-03 21:20:03
【问题描述】:

我有 3 个具有几乎相似设计的自定义视图控制器。
如何创建视图(在 Storyboard 中或使用 XIB)以便我可以为我的 3 个视图控制器使用相同的视图?

【问题讨论】:

  • 不看视图很难做决定,有时我们使用 UIStackView 来保持视图的变化并根据需要显示其中的一两个并隐藏休息。
  • 标准方法是创建一个类扩展 UIView 与 Xib 文件。并从 3 个不同的 VC 调用相同的 UIView 类。
  • @Imad 所以基本上我必须为 UIView 创建一个 xib 并将该视图分配为我的基本 UIViewcontroller 视图。并使用委托在视图中实现用户操作。这是你的观点吗?
  • 有两种方法可以做到这一点,一种是使用基本视图控制器(它具有用于公共视图的 nib 文件)和在您的 VC 中继承 BaseVC。其次是使用 Nib 创建一个单独的 UIView 自定义类,并从 3 个 diff VC 中调用它。对我来说,第一种方法效率更高。

标签: ios objective-c uiviewcontroller storyboard xib


【解决方案1】:

使用 xib 制作自定义视图,添加所有 3 个视图控制器的通用设计。 现在在该视图控制器中添加 UIView 并将该 UIView 的超类赋予该自定义类,这样您就可以在 3 个控制器上使用该自定义视图

看到这个我在多个控制器中使用相同的视图

【讨论】:

  • 你应该修复你的模棱两可的约束 mate ;)
【解决方案2】:

/************************/ 方法一: 创建一个UIViewController类型的类Base,在这里实现所有的设计。

下一步创建 Class Base 类型的 A 类。 Next 再次,创建 Class Base 类型的 B 类。 Next 同样,创建 Class Base 类型的类 C。 这称为子分类。

方法二:

使用所有不同的 ViewController。如果您对所有 viewControllers 有任何类似的 UIView,请创建其不同的类并从每个类中分配其对象。然后使用 delegates 和 block 来执行 UIViewControllers 和 UIView 类之间的操作。

【讨论】:

    【解决方案3】:

    我遇到了同样的问题并创建了一个 Github 存储库来解决它: https://github.com/MaherKSantina/MSAutoView

    步骤:

    • 下载仓库
    • 创建一个 xib(例如:ListingView)
    • 创建一个类(应该和xib同名)
    • 使类继承自 MSAutoView
    • 在 xib 的身份检查器中将类名称设置为类的名称(确保在更改类之前选择 xib 中的文件所有者)
    • 向情节提要添加 UIView
    • 将其类分配给您创建的类
    • 视图应该呈现 xib 的内容

    详细步骤可在 repo 的自述文件中找到。

    干杯

    【讨论】:

      最近更新 更多