![](/img/trans.png)
[英]How to get indexPath of a custom cell in PrepareForSegue method - iOS
[英]How to get the indexpath of a custom table view cell when an UIImage inside of it is tapped and captured by UITapGestureRecognizer in prepareForSegue
好的,標題中有很多變量,抱歉,我無法使其更簡單。
首先,我有一個自定義表格單元格,其描述如下
現在,當用戶點擊單元格本身時,它將轉到視圖A,但是,有一個UITapGestureRecognizer連接到左側的UIImage,該UIImage連接到轉到視圖B的序列。
一切都很好,但是我需要一些可以在表視圖單元格中傳遞給視圖B的數據,以便在顯示視圖后可以做一些事情。
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if(segue.identifier == "toViewA") {
}else if( segue.identifier == "toViewBFromThatImage" ){
let viewBVC = ( segue.destinationViewController as! viewBVC )
///////sender is UITapGestureRecognizer
///////somehow want to get indexpath here
viewBVC.selectedIndex = SOMEHOW DIRREVED INDEXPATH
}
}
也許我應該在初始化時設置一些東西作為UIImage的標簽或手勢對象? 還是我應該首先避免在prepareForSegue中嘗試這樣做?
這仍然是新事物,因此非常感謝您提出任何建議。
我建議將segue放在表格視圖單元格內是錯誤的地方。 它屬於視圖控制器,在視圖控制器上調用了一個委托方法來執行它。
在您的單元格子類中聲明一個協議-
protocol MyCustomCellDelegate {
func imageTappedInCell(cell:MyCustomCell)
}
然后聲明一個delegate
屬性,並在手勢識別器中使用它-
class MyCustomCell {
weak var delegate : MyCustomCellDelegate?
...
func imageTapped(recognizer:UIGestureRecognizer) {
if (recognizer.state == .Ended) {
delegate?.imageTapped(self)
}
}
然后,您可以在視圖控制器中實現委托方法。 在委托方法中,您可以使用單元格標識索引路徑
class MyTableViewController: UIViewController,MyCustomCellDelegate {
func imageTapped(cell:MyCustomCell) {
self.performSegueWithIdentifier("toViewBFromThatImage",sender:cell)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if( segue.identifier == "toViewBFromThatImage" ){
let viewBVC = ( segue.destinationViewController as! viewBVC )
let senderCell=sender as! MyCustomCell
viewBVC.selectedIndex = self.tableview.indexPathForCell(senderCell)!
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.