tableView(_ tableView:UITableView,didSelectRowAt indexPath:IndexPath)未调用

时间:2017-09-08 09:25:10

标签: ios swift uitableview

我的结构如下:

UIViewController -> UIVIew -> UITableView

tableView(_ tableView: UITableView, numberOfRowsInSection section: Int)

tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath)

被调用但是

tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)

未被调用。

class ViewcontrollerA : UIViewController  , UITableViewDelegate , UITableViewDataSource {

    override func viewDidLoad() {
        super.viewDidLoad()

        self.doctortableView.delegate = self
        self.doctortableView.dataSource = self
        self.doctortableView.allowsSelection = true

    }

    func callTable() {

        doctortableView.frame = CGRect(......)
        view1.addSubview(doctortableView)
        doctortableView.isUserInteractionEnabled = true

        self.view.addSubview(view1)

    }

    // Tableview Functions

    // Number of Sections in Table
    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }


    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

        var count = Int()

        return count
    }


    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        var cell = UITableViewCell()

        return cell
    }

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

        //This function is not called
    }
}

2 个答案:

答案 0 :(得分:5)

乍一看,问题似乎出现在这种数据源方法中。

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    var count = Int()

    return count
}

Int()不返回0吗?这意味着您的tableview没有任何单元格。

答案 1 :(得分:0)

根据聊天

的讨论

您正在以编程方式创建TableView并添加到self.view

func callTable() {

    doctortableView.frame = CGRect(......)
    view1.addSubview(doctortableView)
    doctortableView.isUserInteractionEnabled = true

    self.view.addSubview(view1)

}

但你的tableView不在顶部,所以你无法滚动它,这就是委托不工作的原因  以下行缺失

  

self.view.bringSubview(toFront:doctortableView)

这是完整代码

func callTable() {

    doctortableView.frame = CGRect(......)
    view1.addSubview(doctortableView)
    doctortableView.isUserInteractionEnabled = true

    self.view.addSubview(view1)
    self.view.bringSubview(toFront: doctortableView)

}