Только как дополнительная информация, в моем случае мне пришлось отвечать на жест касания по файлу изображения ячейки таблицы, полученной из NSFetchedResultsController, поэтому нам нужен indexPath, а не строка, поэтому я решил использовать изображение, постучавшее само вместо строки информации. Я определил переменную для изображения:
var imgSelected: UIImageView? = nil
Я добавил распознаватель жестов в imageView (imgZona):
public override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier(Storyboard.CellReuseIdentifier, forIndexPath: indexPath) as! ZonasTableViewCell
let zona = fetchedResultsController.objectAtIndexPath(indexPath) as! Zona
cell.infoZona = zona
let tapGestureRecognizer = UITapGestureRecognizer(target:self, action:Selector("imageTapped:"))
cell.imgZona?.addGestureRecognizer(tapGestureRecognizer)
cell.imgZona?.userInteractionEnabled = true
return cell
}
и в методе «imageTapped» я извлек изображение и сохранил в переменной «imgSelected»:
func imageTapped(sender: UITapGestureRecognizer) {
imgSelected = sender.view as? UIImageView
self.performSegueWithIdentifier("MuestraImagen", sender: self)
}
Наконец, в методе "prepareForSegue" я отправил изображение посвященного viewController, чтобы показать постучанное изображение:
override public func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if let identifier = segue.identifier {
switch identifier {
case "MuestraImagen":
if let vc = segue.destinationViewController as? MuestraImagenViewController {
if imgSelected != nil {
if let img = imgSelected!.image {
vc.imgPuente = img
}
}
}
default: break
}
}
}