iOS Swift didSelectRowAtIndexPath 不起作用

Posted

技术标签:

【中文标题】iOS Swift didSelectRowAtIndexPath 不起作用【英文标题】:iOS Swift didSelectRowAtIndexPath not working 【发布时间】:2016-02-09 18:51:55 【问题描述】:

当用户在我的 TableView 中选择一个单元格时,我想执行一行代码。在运行时,我的 TableView 可以填充数据,并且单元格确实是可点击/可选择的。但是,当一个单元格被选中时,'didSelectRowAtIndexPath 方法被跳过/不被调用。我是 Swift 的新手,所以也许我忽略了一些非常简单的东西。我的代码结构如下:

import UIKit

class TopicsViewController: UIViewController, UITableViewDataSource, UITableViewDelegate 

//Number of Sections:
func numberOfSectionsInTableView(tableView: UITableView) -> Int  return 2 

//Number of Rows in Each Section:
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) ->Int  return 3 

//Contents of Each Cell:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
    var cell = UITableViewCell()
    cell.textLabel?.text = "Data"


//Code below is skipped/ignored at runtime, no matter what I try:  
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)  
print("Hello!") 

注意:我没有使用手势识别器(这个主题的其他线程表明手势控制器可能是罪魁祸首)

【问题讨论】:

您是否在 cellForRowAtIndexPath 中返回单元格? 表格视图是以编程方式添加的还是在情节提要中添加的?以编程方式/情节提要:tableView.delegate = self 或在情节提要中检查委托是否已设置。 您是否将表 dataSource AND delegate 出口连接到您的视图控制器?似乎有效的方法是dataSource 的方法,而无效的方法是delegate 谢谢大家! EmilioPelaez 是对的——我在视图控制器类中包含了委托协议,但我没有意识到我还需要将委托出口连接到视图控制器。现在似乎一切正常。 【参考方案1】:

您是否分配了 tableview 的“代表”?

【讨论】:

以上是关于iOS Swift didSelectRowAtIndexPath 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

iOS-Swift-UIView

iOS开发中OC和swift的对比

ios OC、swift混编制作framework

iOS-swift-基础篇1

iOS开发系列--Swift 3.0

swift 2016年 - iOS / PlayerViewController.swift