【问题标题】:How to add reusable custom views programmatically? (Swift)如何以编程方式添加可重用的自定义视图? (迅速)
【发布时间】:2017-09-29 06:34:10
【问题描述】:

我创建了一个可重用的 xib 文件,其中包含一个表,它被加载到一个 TableView.swift 文件中,如下所示:

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)    
    Bundle.main.loadNibNamed("TableView", owner: self, options: nil)
}

我提这个只是为了澄清我对如何加载 xib 文件并不感到困惑


我可以轻松地在我的RootViewController.swift 文件中加载可重用视图,方法是向UIViewController 添加一个视图,并为该视图提供一个自定义类,如下所示:

然后像这样为该视图创建一个出口:

这是我的问题:

为什么我不能像这样简单地添加视图:

let tableViewView = TableView()

当我这样做时,我收到一个我不完全理解的错误:

【问题讨论】:

    标签: ios swift uitableview xib nscoding


    【解决方案1】:

    您还需要覆盖框架初始化程序。

    假设您的 TableView 类是 UITableView 子类,它应该如下所示:

    class TableView: UITableView {
    
        override init(frame: CGRect, style: UITableViewStyle) {
            super.init(frame: frame, style: style)
            // any additional setup code
        }
    
        required init?(coder aDecoder: NSCoder) {
            super.init(coder: aDecoder)
            // any additional setup code
        }
    
    }
    

    因为您正在尝试以编程方式实例化表格视图,所以您需要为它提供一个框架的初始化程序,而不仅仅是一个带有编码器的初始化程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-11
      • 2017-01-12
      • 2017-08-11
      相关资源
      最近更新 更多