对于 iOS,将 ViewController.xib 自定义类更改为另一个类是啥意思?

Posted

技术标签:

【中文标题】对于 iOS,将 ViewController.xib 自定义类更改为另一个类是啥意思?【英文标题】:For iOS, what does changing ViewController.xib custom class to another class mean?对于 iOS,将 ViewController.xib 自定义类更改为另一个类是什么意思? 【发布时间】:2012-04-19 02:28:47 【问题描述】:

使用XCode 4.3.2,如果添加了一个新类TestView(添加了TestView.h.m),它是UIView的子类,它在drawRect里面绘制东西方法。为什么文件ViewController.xib被点击了,Identity Inspector也被点击了,Custom Class必须从UIView改成TestView

这样做是什么意思?如果没有改变怎么办——TestView.m 中的drawRect 中的代码仍然可以轻松调用吗?或者,可以将TestView.m 中的所有代码移动到ViewController.m 吗?如果是这样,那怎么做呢,因为TestView继承自UIView,但ViewController继承自UIViewControllerViewControllerdrawRect可能不会被调用。

【问题讨论】:

【参考方案1】:

自定义绘图的常用方法是实现一个UIView子类,实现drawRect。使该绘图可见的唯一方法是将自定义视图添加到由视图控制器控制但不由视图控制器绘制的视图层次结构中。

xib 描述了用户界面。在 xib 中添加 UIView 子类(如 TestView)会导致该类的实例被分配一个附加到视图层次结构。需要类名才能知道要实例化哪个类(创建一个实例)。

drawRect 是一个 UIView 方法,当系统决定需要绘制部分或全部视图时调用该方法。应用程序不直接调用它。他们实现它并让系统调用它。

ViewController 不绘制任何东西,它们只管理视图的层次结构。所以在视图控制器中实现 drawRect 是没有意义的。

【讨论】:

以上是关于对于 iOS,将 ViewController.xib 自定义类更改为另一个类是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

对于IOS,如何使用vImage将ARGB图像转换为灰度图像

对于 iO,我有一个 if / else 代码块,对 UISwitch 中的变化做出反应。在某些情况下如何将 uiswitch 设置回关闭?

iOS SceneKit 啥是 inversedTransform? (对于假人)

如何将背景图像分配给 ios 的 xamarin 表单中的条目

您的 Xcode 版本可能对于您的 iOS 版本来说太旧了

图解Java IO模型