2016-01-21 70 views
0

我一個UITableView有兩列:文本colomn和左邊的textColumn圖像通話標準SEGUE通過點擊一個按鈕

enter image description here

,我使用的是standarard SEGUE,everytehing是精...

現在我要實現的同樣的動作,當右側按鈕被竊聽

我有一個新的賽格瑞imageDisplay試過的權利(圖)列

let tapRecognizerImage = UITapGestureRecognizer(target: self, action: Selector("imageAction:")) 
    cell.imageButton.addGestureRecognizer(tapRecognizerImage) 

} 

func imageAction(sender: UITapGestureRecognizer) { 
    performSegueWithIdentifier("imageDisplay", sender: self) 
} 
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "showDetail" { 
     let indexPath:NSIndexPath = self.tableView.indexPathForSelectedRow! 
     let controller = segue.destinationViewController as! DetailViewController 
     controller.kategorie = self.fetchedResultsController.objectAtIndexPath(indexPath) as! Kategorien 
    } else if segue.identifier == "imageDisplay" { 
     let indexPath : NSIndexPath = self.tableView.indexPathForSelectedRow! 
     let controller = segue.destinationViewController as! DetailViewController 
     controller.kategorie = self.fetchedResultsController.objectAtIndexPath(indexPath) as! Kategorien 
    } 
} 

現在

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

我得到的錯誤

致命錯誤:意外發現零而展開的可選值

這是,導致self.tableView.indexPathForSelectedRow!是零!

也許,有一種更簡單的方法來解決這個問題?

回答

1

nil,因爲您不通過拍攝圖像選擇一行。
嘗試設置cell.imageButton.tagindexPath.row(在cellForRowAtIndexPath中)並使用sender.tag而不是indexPathprepareForSegue中。 如果你真的需要NSIndexPathprepareForSegue只需創建一個,並將其行設置爲sender.tag

+0

這就是亞歷山大!謝謝!!! –