我有以下问题:
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,但也许我忽略了一些东西。
提前致谢!
答案 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!()
}