用视图控制器类继承视图:新类会实例化基类的 UI 对象吗?
Posted
技术标签:
【中文标题】用视图控制器类继承视图:新类会实例化基类的 UI 对象吗?【英文标题】:Inheriting a view with view controller class: will the new class instantiate the base's UI objects? 【发布时间】:2011-01-08 20:11:48 【问题描述】:我有一个基本的 View Controller 类,其中包含一个视图和一些连接到 MonoTouch 应用程序中的插座的控件,它描述了一个自定义表格单元格。从这个类中,我继承了所有其他自定义单元格。这很舒服,但我不确定继承的类是否会实例化基类的视图和子视图(从而占用双倍内存)?
基地有一个 UITableViewCell 三个 UILabel 和两个按钮。它们连接到插座,因为我需要在基类中放置一些常用功能。
继承的类添加了相同的视图,但我需要手动添加它们。它们使用与基类中的插座相同的名称连接到插座。
如果继承的类确实实例化了基类的 UI 元素及其自身,有没有办法修复它并仅使用基类的 UI 元素?
感谢阅读。
【问题讨论】:
【参考方案1】:我会尽量回答我所理解的。让我们来看看。你有一个管理 UITableViewCell 的 UIViewController。在 IB 中,您将单元的一些控件连接到控制器。
我不明白您手动添加相同视图的意思。你为什么要这么做?
如果你从 UIViewController 继承来扩展你的基本表格单元格,它当然会包含基础的所有控件。
如果您通过向现有的 UIView 添加一堆其他 UIView 来扩展表格单元格,则现有的 UIView 不会被覆盖。
将 IB 中的视图视为对象的“序列化”版本。它们是真实的物体。这意味着如果您在 IB 中有一个按钮和一个标签,则在从 IB 加载事物时,将执行“new UIButton()”和“new UILabel()”。
如果在你的继承类中你不需要基础的东西,不要继承。
您是面向对象开发的新手吗?也许您应该首先了解继承、多态性和一般面向对象开发的基础知识 - 还是我完全误解了您的问题?
【讨论】:
您好,感谢您的回答。我是 Interface Builder 的新手,我发现它是一个非常令人困惑的工具(但话又说回来,我来自 Visual Studio)。让我问这个问题的是,在视图控制器的 .xib.designer.cs 文件中没有实例化子视图(按钮、标签等)的代码。似乎设计者只是从 .xib 文件中读取实例化指令。所以简而言之,我不确定继承的视图控制器是否也会继承 xib 文件并实例化这些按钮、标签等。 好吧,同样的问题。我已经使用 Visual Studiolized 很多年了,然后是 Xcode 和 IB - 真是一团糟! :-) 但后来我改用 MonoTouch 并在几个小时内就开始工作,因为我所有的 C# 知识都对我有帮助。就 IB 而言:是的,它是一个非常奇怪的工具。所有视图(即 UIKit 中调用的控件)都是延迟加载的。因此,您在 IB 中创建了一个出口,并且您在 dsesigner.cs.xib 中有一个属性可以访问它。它确实是 XIB 文件中的内容。如果您认为问题已回答,请勾选“已回答”。谢谢。以上是关于用视图控制器类继承视图:新类会实例化基类的 UI 对象吗?的主要内容,如果未能解决你的问题,请参考以下文章