簡體   English   中英

當UITapGestureRecognizer在prepareForSegue中點擊並捕獲其中的UIImage時,如何獲取自定義表格視圖單元格的索引路徑

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM