2017-10-25 15 views
0

tableViewでそれぞれの行を選択すると、別のViewControllerを表示したいとします。しかし、私はそれを修正することができませんそれは、ViewControllersのためのすべての識別子をチェックしたが、それはまだ間違った方法で表示されているそのコントローラのそれぞれの行を選択した後ランダムViewControllers ここに私が書いたコードです:tabelviewで行を選択する際にそれぞれのView Controllerを見た

func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) { 
    switch(indexPath.row) { 
     case 0 : 
      let v1 = self.storyboard?.instantiateViewController(withIdentifier: "pass1") as! ViewControllerngodetails 
      navigationController?.pushViewController(v1, animated: true) 
      break 

     case 1 : 
      let v2 = self.storyboard?.instantiateViewController(withIdentifier: "pass2") as! ViewController2Reg 
      navigationController?.pushViewController(v2, animated: true) 
      break 

     case 2 : 
      let v3 = self.storyboard?.instantiateViewController(withIdentifier: "pass3") as! ViewController3FCRA 
      navigationController?.pushViewController(v3, animated: true)   
      break 

     case 3 : 
      let v4 = self.storyboard?.instantiateViewController(withIdentifier: "pass4") as! ViewController4SecIssue 
      navigationController?.pushViewController(v4, animated: true) 
      break 

     case 4 : 
      let v5 = self.storyboard?.instantiateViewController(withIdentifier: "pass5") as! ViewController5contactdet 
      navigationController?.pushViewController(v5, animated: true) 
      break 

     case 5 : 
      let v6 = self.storyboard?.instantiateViewController(withIdentifier: "pass6") as! ViewController6bnkdetails 
      navigationController?.pushViewController(v6, animated: true) 
      break 

     default: 
      break 
    } 
} 

答えて

0

あなたは、行の選択を解除することはありません。たぶん、テーブルビューの複数の選択が有効になっていて、以前の選択を保持していますか? didSelectRowAtメソッド内でスイッチする前にこれを入れてみてください:

tableView.deselectRow(at: indexPath, animated: true) 

EDITを:私はちょうどあなたがデリゲートメソッドdidDeselectRowAtを使用して、didSelectRowAtを使用する必要がありました。それはあなたの問題だろう。一度変更したら、didSelectRowAtメソッドは行を選択解除してから、何か他の処理を行う必要があります。

+1

はありがとう、私は –

+0

ニース、それを修正しました – erikmartens

0

あなたが表示されたコードは正常です。この問題はおそらく入力パラメータ(indexPath)にあります。 func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath)

(私はあなたが問題を引き起こしたコードを識別するために、ブレークポイントを使用することをお勧め)

0

FYI配列にすべてのVC識別子を格納し、didSelectメソッドも呼び出すことができます。

let arrIdentifiers = ["pass1","pass2","pass3","pass4","pass5","pass6"] 

のtableViewのdidSelect:あなたは、正しいと私の答えをマークしてくださいすることができた場合

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    let vc = self.storyboard?.instantiateViewController(withIdentifier: arrIdentifiers[indexPath.row]) 
    self.navigationController?.pushViewController(vc!, animated: true) 
    tableView.deselectRow(at: indexPath, animated: true) 
} 
関連する問題