一尘不染

如何快速检测触摸或单击的tableView单元格

swift

我正在尝试获取index所选项目,TableView然后开始一些活动。不幸的是,我发现的大多数解决方案都在Objective-C或不起作用。

方法func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)不打印cell标签。

有人可以帮我吗?

导入UIKit
导入ResearchKit

class TaskListViewController:UIViewController,UITableViewDataSource {

    让task = [(“ Short walk”),
        (以下简称“测听”),
        (“手指轻敲”),
        (“反应时间”),
        (“空间跨度内存”)
    ]


    //表格中有多少节
    func numberOfSectionsInTableView(tableView:UITableView)-> Int {
        返回1
    }

    //返回int多少行
    func tableView(tableView:UITableView,numberOfRowsInSection部分:Int)-> Int {
        返回task.count
    }

    //内容是什么

    func tableView(tableView:UITableView,cellForRowAtIndexPath indexPath:NSIndexPath)-> UITableViewCell {
        var cell = UITableViewCell()

        var(testName)=任务[indexPath.row]
        cell.textLabel?.text = testName
        返回单元
    }

    //为每个表节命名

    func tableView(tableView:UITableView,titleForHeaderInSection部分:Int)->字符串?{

        返回“任务”

    }

    func tableView(tableView:UITableView,didSelectRowAtIndexPath indexPath:NSIndexPath){

        让indexPath = tableView.indexPathForSelectedRow();

        让currentCell = tableView.cellForRowAtIndexPath(indexPath!)作为UITableViewCell!

        println(currentCell.textLabel!.text)
    }


    覆盖func viewDidLoad(){
        super.viewDidLoad()

    }  
}

经过几次尝试,我将代码更改为与我发现的教程不同的代码。而且它也不起作用。现在我认为这是iOS模拟器的问题…

导入UIKit
导入ResearchKit

class TaskListViewController:UIViewController,UITableViewDelegate,UITableViewDataSource {

    @IBOutlet
    var tableView:UITableView?
    var项目:[String] = [“ We”,“ Heart”,“ Swift”]

    覆盖func viewDidLoad(){
        super.viewDidLoad()

        self.tableView!.registerClass(UITableViewCell.self,forCellReuseIdentifier:“ cell”)
    }


    func tableView(tableView:UITableView,numberOfRowsInSection部分:Int)-> Int {
        返回self.items.count;
    }

    func tableView(tableView:UITableView,cellForRowAtIndexPath indexPath:NSIndexPath)-> UITableViewCell {
        var cell:UITableViewCell = self.tableView!.dequeueReusableCellWithIdentifier(“ cell”)as!UITableViewCell

        cell.textLabel?.text = self.items [indexPath.row]

        返回单元
    }

    func tableView(tableView:UITableView,didSelectRowAtIndexPath indexPath:NSIndexPath){
        println(“您选择了单元格#\(items [indexPath.row])!”)
    }

}

阅读 199

收藏
2020-07-07

共1个答案

一尘不染

如果您想从单元格中获取值,则无需在 didSelectRowAtIndexPath

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    println(tasks[indexPath.row])
}

任务如下:

let tasks=["Short walk",
    "Audiometry",
    "Finger tapping",
    "Reaction time",
    "Spatial span memory"
]

您还必须检查cellForRowAtIndexPath您必须设置的标识符。

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("CellIdentifier", forIndexPath: indexPath) as UITableViewCell
    var (testName) = tasks[indexPath.row]
    cell.textLabel?.text=testName
    return cell
}

希望能帮助到你。

2020-07-07