将 UIViewController 的 UI 扩展到子 UIViewControllers

Posted

技术标签:

【中文标题】将 UIViewController 的 UI 扩展到子 UIViewControllers【英文标题】:Extend UIViewController's UI down to children UIViewControllers 【发布时间】:2015-09-15 05:28:07 【问题描述】:

我有一个基本视图控制器BaseUIViewController,它是从UIViewController 扩展而来的。我在这个 ViewController 的底部有两个 UIButtons。基本上,我希望每个UIViewController 上的这两个按钮在我的应用程序中的同一位置。当我扩展BaseUIViewController 时,我在子视图控制器中看不到它们。 我也给按钮提供了 IBOutlets! 我是编程新手。请帮忙。这样继承不行吗?

【问题讨论】:

【参考方案1】:

您可以创建一个UIViewControllerContainment。这个***'s 帖子详细解释了如何创建它并使其工作。同样,也看看这个***'s 帖子。这里是使用 childViewControllers 完成的。

【讨论】:

【参考方案2】:

确保将这些按钮属性放在@interface 而不是@implement 中,只有@interface 中的属性可以在子类中看到。这是一个例子:

@interface BaseUIViewController
    @property (nonatomic, weak) IBOutlet UIButton *button1;
    @property (nonatomic, weak) IBOutlet UIButton *button2;
@end

【讨论】:

【参考方案3】:

上面 MUNAHIL 回答的两种方式都是我认为最好的。如果您想以更基本的方式实现此目的,您可以执行以下操作。

BaseUIViewController 中添加两个UIButtons(以编程方式在viewDidLoad 或情节提要中)。如果需要,您可以先添加一个 UIToolBar,然后在其顶部添加按钮。

使其他视图控制器成为BaseUIViewController 的子类。

@interface SomeViewController: BaseUIViewController

现在,默认情况下,所有视图控制器都将具有这两个按钮。

【讨论】:

以上是关于将 UIViewController 的 UI 扩展到子 UIViewControllers的主要内容,如果未能解决你的问题,请参考以下文章

从父 UIViewController 类继承 UI 组件?

UICollectionView 未使用自定义 UIViewController 更新

两个扩展为全宽视图的 UIStackviews?

将 UIViewController 添加到 UIScrollView

将 UIViewController 添加到 UICollectionViewCell

以编程方式将视图加载到 UIViewController