음이 슬쩍에 보이는 다음과 같은 오류 메시지를주고 라인에
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (segue.identifier == "recipeDetail") {
let indexPath = self.tableView!.indexPathForSelectedRow
let destinationViewController: DetailViewController = segue.destinationViewController as! DetailViewController
destinationViewController.recipe = recipes[indexPath!.row]
}
else if segue.identifier == "yourSegueIdentifier"
{
let indexPath = self.tableView!.indexPathForSelectedRow
let nextVC: WebViewController = segue.destinationViewController as! WebViewController
nextVC.recipe = recipes[indexPath!.row]
}
}
tableView는 "indexPathForSelectedRow"메소드를 등록하지 않습니다. 당신이 할 대안으로 수하는 설정은
class ViewController: UIViewController{
var swipeIndex : Int!
//Code, code, code...
변수 다음 슬쩍 조치가 호출되면 그것을 설정하는 글로벌 swipeIndex이다.
let sendToWebsite = UITableViewRowAction(style: .Default, title: "Website")
{ (action, indexPath) in
self.swipeIndex = indexPath.row
self.performSegueWithIdentifier("yourSegueIdentifier", sender: nil)
}
sendToWebsite.backgroundColor = UIColor.blueColor()
return [sendToWebsite]
}
후 : 당신의 행이 선택된 상태가 아닌 탓
else if segue.identifier == "yourSegueIdentifier"
{
let indexPath = self.tableView!.indexPathForSelectedRow
let nextVC: WebViewController = segue.destinationViewController as! WebViewController
nextVC.recipe = recipies[self.swipeIndex]
}
}
indexPathForSelectedRow이 전무를 반환합니다. 테이블보기에서 선택 항목이 활성화되어 있습니까? 'didSelectRowAtIndexPath' 델리게이트 메소드를 구현 했습니까? 행을 스 와이프해도 자동으로 선택 상태가됩니다. – SArnab