我想在修改 IBOutlet 属性的框架中创建一个父类(super class)。但是,我希望将子类连接到 Storyboard,因为我不想将控件连接到框架中的类。

例如,我框架中的父类(super class)如下所示:

public class MySuperDetailViewController: UIViewController {

    @IBOutlet public weak var titleLabel: UILabel?
    @IBOutlet public weak var dateLabel: UILabel?
    @IBOutlet public weak var contentWebView: UIWebView?

    ...
}

然后在子类中,我想将控件拖动到子类上。所以我必须通过覆盖来公开这些属性。我正在尝试这样做,但它不允许我:
class MyDetailViewController: MySuperDetailViewController {

    @IBOutlet weak var titleLabel: UILabel?
    @IBOutlet weak var dateLabel: UILabel?
    @IBOutlet weak var contentWebView: UIWebView?

}

我得到的错误是: Cannot override with a stored property 'titleLabel', 'dateLabel', and 'contentWebView'

我怎样才能做到这一点或更好的方法呢?

最佳答案

不要试图在子类中重新创建变量; IBOutlet 变量仍然存在。您仍然可以通过多种方式在 Interface Builder 内部连接它们。

  • 实用程序(右侧面板)-> 连接检查器-从 IBOutlets 列表中拖动。
  • 文档大纲(左面板) - 从 MyDetailViewController
  • 拖动
  • 当您在界面生成器中选择了 UIViewController 时,从黄色圆圈中拖动

  • 注意:所有 UIViewController 子类都继承了一个名为 view 的 IBOutlet ;此属性已存在于 Interface Builder 中,即使您无法单击 + 拖动来连接它。

    关于ios - 从父类(super class)覆盖 IBOutlet 属性?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36392079/

    10-13 07:42