2016-08-14 149 views
1

如何获得在小区的按钮在这里挖一个特定细胞的indexPath.row是我的代码获取细胞的indexPath.row

if let indexPath = self.tableView?.indexPathForSelectedRow { 
    print("\(indexPath.row)") 

} 
+0

如果他们已经利用该按钮,它可能不会是seleced行,因为按钮是挖掘,而不是行。您需要获取对单元格的引用并使用'indexPathForCell' – Paulw11

回答

1

当一个按钮在你的细胞被窃听,你需要遍历该按钮的superviews链,以获取对UITableViewCell的引用。一旦出现,您可以使用tableView.indexPathForCell(cell: UITableViewCell)函数向tableView索引indexPath。

事情是这样的:

var optionalCell: UITableViewCell? = nil 
var view: UIView = yourButton 

while view.superView != nil { 
    view = view.superView 
    if view is UITableViewCell { 
    optionalCell = view 
    break 
    } 
} 

if let cell = optionalCell { 
    var indexPath = tableView.indexPathOfCell(cell) 
} else { 
    return 
} 

我不知道你的代码看起来,但这是它应该是什么样子。当然,你可以随时对它进行破解,并且确切地知道单元格(UITableViewCell)与你的按钮进行比较的次数,但无论单元格视图层次结构中按钮的深度如何,这都可以工作。

+0

最好在单元格和表格ViewController之间建立一个委托协议,并让单元格在按钮被点击时将自己的引用传递给委托。 – Paulw11

3

获得来自按钮(发送)动作

var cell: UITableViewCell = sender.superview.superview as UITableViewCell 

细胞获取indexpath

tableView.indexPathForCell(cell) 
+0

这是一个坏方法。它对表格单元格的布局做了太多的假设。过去的布局已经改变,这样的代码因此而中断。不要使用这种方法。 – rmaddy

+0

请多描述一下。我不明白。可能是我错过了一些东西。让我来帮忙 :) – Sofeda