TableView单元格选择事件未触发

时间:2016-03-30 16:10:00

标签: ios swift uitableview

我在XIB文件中创建了一个组件。该文件包含2个组件

  1. 标签
  2. 的TableView
  3. 然后我将其File's Owner类链接并设置为SampleView。我已将XIB文件view附加到SampleView.swift文件中,并且此文件在其类中只有以下代码:

    @IBOutlet var view: UIView!
    

    我现在已经创建了一个包含协议SampleControllerUIViewControllerUITableViewDelegate的控制器文件UITableViewDataSource。我在其init() func中放置了以下代码以显示自定义组件:

    init() {
            super.init(nibName: nil, bundle: nil)
    
            modalPresentationStyle = UIModalPresentationStyle.Custom
            view.addSubview(SampleView())
    }
    

    我正在使用此SampleController以编程方式显示为Modal

    这些代码显示为显示Label和TableView的模态。它还填充TableView中的数据。问题是:

    当我点击表格中的单元格时,它不会在第一次尝试时触发该事件。当我点击另一个单元格时,它会触发上一个单元格事件。

    知道为什么会这样吗?

    以下是用于填充和处理单元格点击的2个函数:

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    
            var cell = tableView.dequeueReusableCellWithIdentifier("CELL")
            if (cell == nil) {
                cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "CELL")
            }
            cell!.textLabel?.text = sampleData[indexPath.row]["title"]
            return cell
    }
    
    func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) {
           print("tapped")
    }
    

2 个答案:

答案 0 :(得分:2)

Darn it!我使用的是didDeselectRowAtIndexPath而不是didSelectRowAtIndexPath。那是在午夜之后编程时会发生什么。

答案 1 :(得分:0)

您需要使用其他方法将单元格出列:

Right single quotation mark character (’)

顺便说一下,检查零个单元格是不必要的。