Ios TableView单元格选择事件未触发

Ios TableView单元格选择事件未触发,ios,swift,uitableview,Ios,Swift,Uitableview,我在XIB文件中创建了一个组件。该文件包括2个组件 标签 桌面视图 然后我链接并将它的文件所有者类设置为SampleView。我随附了带有SampleView.swift文件的XIB文件视图,该文件在其类中只有以下代码: @IBOutlet var view: UIView! 我现在已经创建了一个控制器文件SampleController,其中包含协议UIViewController、UITableViewDelegate和UITableViewDataSource。我将以下代码放在它的ini

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

  • 标签
  • 桌面视图
  • 然后我链接并将它的
    文件所有者
    类设置为
    SampleView
    。我随附了带有SampleView.swift文件的XIB文件
    视图
    ,该文件在其类中只有以下代码:

    @IBOutlet var view: UIView!
    
    我现在已经创建了一个控制器文件
    SampleController
    ,其中包含协议
    UIViewController
    UITableViewDelegate
    UITableViewDataSource
    。我将以下代码放在它的
    init()
    func中以显示自定义组件:

    init() {
            super.init(nibName: nil, bundle: nil)
    
            modalPresentationStyle = UIModalPresentationStyle.Custom
            view.addSubview(SampleView())
    }
    
    我使用这个
    SampleController
    以编程方式显示为
    模式

    这些代码显示为显示标签和表格视图的模式。它还填充TableView中的数据。问题是:

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

    知道为什么会这样吗

    以下是用于填充和处理单元格抽头的两个函数:

    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")
    }
    

    您需要使用不同的方法将单元格出列:

    var cell = tableView.dequeueReusableCellWithIdentifier("CELL", forIndexPath: indexPath)
    

    顺便说一句,无需检查nil单元格。

    该死!我使用的是
    didSelectRowAtIndexPath
    而不是
    didSelectRowAtIndexPath
    。这就是午夜后编程时会发生的情况。

    类似于电池重复使用的问题。您是否实现了所需的
    UITableViewDataSource
    方法?如果是这样,你能在你的问题中发布它们吗?@Koen我提到过我在
    SampleController
    文件中使用了UIViewController、UITableViewDataSource和UITableViewDelegate。数据填充也很好,但点击第二个单元格后会触发点击事件。好的,那么您的
    单元格中有什么用于RowatineXpath
    didselectRowatineXpath
    函数?@Koen我用两个函数更新了问题。该死!我使用的是
    didSelectRowAtIndexPath
    而不是
    didSelectRowAtIndexPath
    。这就是午夜后编程时会发生的情况。我现在收到了此错误:
    无法将具有标识符单元格的单元格出列-必须为标识符注册nib或类,或者在故事板中连接原型单元格
    是的,您必须修复此错误。搜索SO,您会发现许多类似的问题。当您必须创建动态单元格并使用
    UITableView
    而不是
    UITableViewController
    时,这不是必需的。这是一个常见的错误。看看这篇文章的投票数