使用iboutlet tableview Swift的子类

时间:2017-08-12 19:31:43

标签: ios objective-c uitableview uistoryboard

我在故事板中有一个带有tableview的视图控制器,如下所示:

enter image description here

它的类是这个(我将iboutlet tableview称为'tabella'):

class RisultatiRicerca: UIViewController , UITableViewDataSource , UITableViewDelegate{

    var codeSearch = 0

    @IBOutlet public var tabella : UITableView!


    override func viewDidLoad() {

        super.viewDidLoad()
        self.tabella.estimatedRowHeight = 50
        self.tabella.rowHeight = UITableViewAutomaticDimension
        self.tabella.delegate = self
        self.tabella.dataSource = self
        self.tabella.reloadData()

    }

    @available(iOS 2.0, *)
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let cella = tableView.dequeueReusableCell(withIdentifier: "risu") as! CellaRisultato

        return cella

    }

    @available(iOS 2.0, *)
    public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int{

        return 10
    }

}

我的问题是:

我必须创建上面这个的子类,例如:

class TuttiRicerca: RisultatiRicerca {

    override func viewDidLoad() {

        super.viewDidLoad()
        self.codeSearch = 1
    }
}

但是当我出示TuttiRicerca时,我收到此错误('tabella'为零):

enter image description here

这就像子类没有链接故事板中的tableview。 你能救我吗?

1 个答案:

答案 0 :(得分:1)

如果您想要IBOutlet引用,则不能只引用TuttiRicera()。它如何知道您尝试使用的故事板中的哪个场景(即使您只有一个场景)?

你需要给故事板场景一个" storyboard id"然后通过故事板进行实例化(例如storyboard.instantiateViewController(withIdentifier: "..."),而不是TuttiRicera()。请参阅instantiateViewController(withIdentifier:)