ios - 对于 iOS,将 ViewController.xib 自定义类更改为另一个类意味着什么?

标签 ios cocoa-touch uiviewcontroller uikit

使用XCode 4.3.2,如果添加一个新类TestView(添加了TestView.h.m),并且它是 UIView 的子类,它在 drawRect 方法中绘制内容。为什么点击了ViewController.xib这个文件,还要点击Identity Inspector,并且要把Custom Class从UIView改为测试 View

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

最佳答案

进行自定义绘图的常见方法是实现 UIView 子类并实现drawRect。使该绘图可见的唯一方法是将自定义 View 添加到由 View Controller 控制但不由 View Controller 绘制的 View 层次结构中。

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

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

ViewController 不绘制任何内容,它们只管理 View 的层次结构。所以在 View Controller 中实现drawRect是没有意义的。

关于ios - 对于 iOS,将 ViewController.xib 自定义类更改为另一个类意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10220855/

相关文章:

ios - 无法转换类型的值

ios - 在 for 循环中完成 findObjectsInBackgroundWithBlock 后执行操作

ios - UIViewController View 的框架在呈现后发生变化(viewController : animated: completion: )

ios - 从容器中的 UITableView 转到新的 UIViewController

ios - 无法强制 UIViewController 方向

ios - 路径线 SwiftUI 的圆角

ios - 更改货币格式的默认语言环境行为

ios - remoteControlReceivedWithEvent 不在单例类中调用

objective-c - 如何在iPhone中设置UIActionSheet的背景颜色?

ios - Swift 打开/关闭 App 导致 ViewController 出现不止一次