在iOS上加载UIView时如何运行一些代码?

时间:2011-06-20 14:39:39

标签: objective-c ios uiview code-injection

我想在从资源加载任何 UIView时运行一些代码。

我怎么能这样做,而不必修改每个UIView子类的实现?

注意:子类化UIView不是一个选项。

4 个答案:

答案 0 :(得分:1)

您应该将UIView子类化,然后将您的子类用于所有其他UI视图

答案 1 :(得分:1)

您可以考虑创建一个UIView,它将是 @gsempe 建议的所有UIView的基本视图类,并实现willMoveToSuperview:方法

来自文档。

  

告诉他们的超级视图是   即将更改为指定的   上海华。

- (void)willMoveToSuperview:(UIView *)newSuperview;
- (void)willMoveToWindow:(UIWindow *)newWindow;

答案 2 :(得分:1)

由于我们隐含地讨论资源和NIB,我只能回忆起加载视图的两种方法 - UIViewController的{​​{1}}或initWithNibName:bundle,尽管可能有一些隐私我们无法访问的方法。

所以你可以想到那里的压倒性行为。您可以创建一个自定义loadNibNamed:owner:options:子类,它将成为所有视图控制器和子类UIViewController的父级,以覆盖NSBundle。但这可能取决于你想要完成什么样的任务。

答案 3 :(得分:0)

您可以尝试声明自己的类别并覆盖方法,但我认为这不是一个好习惯。其他方法是扩展UIView子类并覆盖您想要的方法。并在您的应用程序中使用该类而不是UIView。

所以这种方法实际上取决于你的用例。