2016-07-07 6 views
0

스 와이프 동작을 사용하여 셀 내부의 텍스트에 대한 정보를 WebViewController로 보내는 앱을 만들고 있습니다. 스 와이프 동작은 다음과 같습니다.스 와이프 액션 셀의 잘못된 예외 Swift

let sendToWebsite = UITableViewRowAction(style: .Default, title: "Website") 
{ (action, indexPath) in 
    self.performSegueWithIdentifier("yourSegueIdentifier", sender: nil) 
} 
    sendToWebsite.backgroundColor = UIColor.blueColor() 
    return [sendToWebsite] 
} 

이 작업은 정상적으로 작동하지만 두 개의 다른 VC와 동일한 View Controller에서 나오는 두 개의 segues도 있습니다. 첫 번째 segue (recipeDetail)는 셀을 직접 탭하여 잘 작동하지만 두 번째 segue (yourSegueIdentifier)는 셀에서 슬라이드 동작을 활성화하고 작동하지 않을 때 나타나는 버튼입니다. Cell Swipe Action

segues :

nextVC.recipe = recipes[indexPath!.row] 

indexPath가 전무로 나오는 및 error on line 13

+0

indexPathForSelectedRow이 전무를 반환합니다. 테이블보기에서 선택 항목이 활성화되어 있습니까? 'didSelectRowAtIndexPath' 델리게이트 메소드를 구현 했습니까? 행을 스 와이프해도 자동으로 선택 상태가됩니다. – SArnab

답변

1

음이 슬쩍에 보이는 다음과 같은 오류 메시지를주고 라인에

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] 
    } 
} 
+0

swipeIndex 변수는 어떻게 설정해야합니까? – zach2161

+0

클래스 바로 아래 ViewController : UIViewController. 그냥 추가 : var swipeIndex : Int! –

+0

더 자세히 설명하는 답변을 편집했습니다. –