0

Хорошо, много переменных в названии, извините, я не мог сделать это более простым.Как получить индексный путь к пользовательской ячейке представления таблицы, когда UIImage внутри нее будет прослушиваться и захвачен UITapGestureRecognizer в prepareForSegue

Во-первых, у меня есть пользовательские ячейки таблицы с описаниями, как так

enter image description here

Теперь, когда пользователь нажимает на самой клетке, она будет идти, чтобы посмотреть, однако, есть UITapGestureRecognizer который подключен к UIImage слева, который подключен к сегменту, который переходит в View B.

Все в порядке, но мне нужны некоторые данные, которые находятся внутри ячейки таблицы просмотра, которую я могу передать View 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 или объекта жеста при инициализации? Или я должен избегать попыток сделать это в процессе подготовкиForSegue?

Новым для этого, поэтому любой совет очень ценится.

ответ

3

Я бы предположил, что помещение 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)! 
     } 
    } 
} 
+0

Попытка теперь, спасибо, вернется, когда будет подтверждено. – Saifis

+0

Я только что понял, что я не показывал, был в 'cellForRowAtIndexPath' вам нужно будет установить' cell.delegate = self' – Paulw11

+0

Я застрял на том, как заставить распознаватель жестов подключиться к imageTapped в MyCellView, мне нужно установить выход делегатом на него? Невозможно связать эти два. – Saifis