NSIndexPath以1

时间:2015-09-02 15:17:43

标签: ios swift tableview

我有以下问题:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    // ...
    println(indexPath.row)
}

我的输出是这样的:

1
0
1
0

numberOfRowsInSection告诉我,我有 10 项:

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    if (self.actionDto != nil){
        println(self.actionDto?.count)
        return self.actionDto!.count
    }
    return 0
}

我已经检查过indexpath.row is starting from 1 instead of 0了吗?但是不能真正按照答案或​​解决我的问题。

实际上我只是想在单元格中点击一个标签并做其他一些事情。但我必须确切知道它是哪一行。

我考虑过使用didSelectRowAtIndexPath方法。然后我有问题,如果我点击标签,不会调用didSelectRowAtIndexPath方法。 (我想是因为这个标签上有多个观察者。 - >我在这个单元格上有委托方法,另一个我认为是tableview。)

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    let indexPath = tableView.indexPathForSelectedRow()
    let currentCell = tableView.cellForRowAtIndexPath(indexPath!) as! TimelineCell
    println("The number of cell is \(currentCell.numberOfRowAtIndexPath)")
}

如果我单击进入单元格而不是标签或图像,则一切正常,我得到正确的行数。也许有人知道如何添加一个以上的观察者"例如,在标签上。这样我的Selectormethod和didSelectRowAtIndexPath都知道了单元格中的标签。我认为这可以解决我的问题,我可以用正确的行知识做我自己的Selector方法。

对于想要了解Selectormethod的意思的人:

let gestureRecognizer = UITapGestureRecognizer(target: self, action: Selector("labelPressed")) <- 
label.addGestureRecognizer(gestureRecognizer)

func labelPressed() {
    delegate?.switchToOwnProfil!()
}

神秘的是,第一个输出首先显示的是1而不是0,但也许我忽略了一些东西。

提前致谢!

1 个答案:

答案 0 :(得分:1)

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
// ...
yourLabel.tag = indexPath.row
let gestureRecognizer = UITapGestureRecognizer(target: self, action: Selector("labelPressed:")) <- 
yourLabel.addGestureRecognizer(gestureRecognizer)
println(indexPath.row)
}

并在您的函数中

func labelPressed(label:UILable) {
        println(label.tag)
   delegate?.switchToOwnProfil!()
}