我有一个包含多个部分的表格视图 我想知道用户点击itemImage时的indexPath。
class ItemCell:UITableViewCell{
@IBOutlet weak var itemImage:UIImageView!
@IBOutlet weak var itemName:UILabel!
}
答案 0 :(得分:2)
在cellForRow
中,将点击操作添加到UIImageView
并传递tapGestureRecognizer,用于在点击处理函数中获取点按的图片视图
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "ItemCell") as! ItemCell
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(imageTapped(tapGestureRecognizer:)))
cell.itemImage.isUserInteractionEnabled = true
cell.itemImage.addGestureRecognizer(tapGestureRecognizer)
return cell
}
然后在处理程序函数中,您可以获取图像视图。因此,您的图像视图位于内容视图中,然后该视图位于单元格中。因此,您可以通过调用parent
来获取单元格,然后进一步获取indexPath
func imageTapped(tapGestureRecognizer: UITapGestureRecognizer) {
let tappedImage = tapGestureRecognizer.view as! UIImageView
if let cell = tappedImage.superview?.superview as? ItemCell{
let indexPath = self.YourTableView.indexPath(for: cell)
}
//... other code here
}
答案 1 :(得分:0)
在此函数中传递ItemImage和TableView实例
func viewIndexPath(subView:UIView , tableView:UITableView)->IndexPath?{
let subViewPosition = subView.convert(subView.frame ,to:tableView)
if let indexPath = tableView.indexPath(at:subViewPosition){
return indexPath
}
return nil
}
答案 2 :(得分:0)
您要做的是向if (owed <= 0.001 && owed >= -0.001)
{
printf("You need %i coins\n", coins);
}
添加delegate
并在单元格内创建cell
,如此
protocol
protocol ItemCellProtocol {
func didSelectCell(cell: ItemCell)
}
内有viewController
的{{1}}应该向此tableView
确认并实施此方法。
添加
protocol
至 var delegate: ItemCellProtocol?
每次ItemCell
dequeue
ItemCell
将delegate
属性设置为self
。
然后在cell
内添加一个方法来收听imageTapped
func imageTapped(tapGestureRecognizer: UITapGestureRecognizer) { {
delegate?.didSelectCell(self)
}
这将在viewController
中触发您的方法,并在该方法中将项目单元格的引用传递给它,只需在表格视图上调用indexPathForCell
方法,您就会拥有{{ 1}}