创建一个 UIView 子类,当它的父 viewController 出现时调用委托函数?

Posted

技术标签:

【中文标题】创建一个 UIView 子类,当它的父 viewController 出现时调用委托函数?【英文标题】:Create a UIView Subclass that calls a delegate function whenever it's parent viewController appears? 【发布时间】:2010-03-14 23:27:55 【问题描述】:

编辑 2:我现在认为最好的解决方案是创建只包含 ListeningView 协议的 ListeningView.h,而不是继承 ListeningView(因为我们不能在 Obj-C 中进行多重继承)。然后,你还需要 ListeningViewController。

编辑:好的,我知道这里是什么被批准的成语了。我应该继承 UIViewController 来创建 ResponderViewController,当 ResponderViews 出现/消失时,它将循环遍历它的子视图。然后,任何具有 responderViews 的 viewController 都应该从 ResponderViewController 继承。

=======

UIViewControllers 有 viewWillAppear、viewDidDisappear 等委托方法。

我想创建一个 UIView 子类,它可以添加到 viewController 的视图中,当 UIViewController 出现或消失时,会调用委托函数。

我可以通过将函数调用放在 UIViewController viewWillAppear/viewWillDisappear 委托函数中轻松地做到这一点,但是如何将这种行为封装在 UIView 中?

【问题讨论】:

【参考方案1】:

如果我是你,我不会那样做。所有这些行为不应该由视图控制;那只是控制器的用途。

【讨论】:

这些视图不会是全屏视图,所以我认为我不应该在这里使用 UIViewController。它的任何方法都不能正常工作来呈现或隐藏视图。如果有一个名为 PartialScreenViewController 的类可以添加到 viewController 并调用它的所有委托方法,那就是我会使用的。 A ViewController 应该控制它的所有子视图,而不仅仅是填充屏幕的子视图。我有控制数十个子视图的视图控制器,这些子视图都没有填满屏幕。乔纳森是对的,这项工作应该在控制器而不是视图中完成。

以上是关于创建一个 UIView 子类,当它的父 viewController 出现时调用委托函数?的主要内容,如果未能解决你的问题,请参考以下文章

创建后调整uiview子类的大小

Swift 4:防止UIView的子视图移动到它的父节点之外

子类 UIView 不显示添加到它的 UIImageViews

UIView 过渡动画

子类化 UIView 并显示多个实例

更新 UIView 子类中 drawRect 中绘制的组件中的文本