2016-06-13 14 views
0

私はテーブルビューメニューを作成します。特定のストーリーボードを表示するために1つのセルをタップすると、そのメニューを作成します。メニューは4セル(その4つの異なるストーリーボード)tableviewのセルがタップされても何も起こりません

からフォーマットされてここに私のコードは次のとおりです。

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
     _ = tableView.indexPathForSelectedRow! 
     if let _ = tableView.cellForRowAtIndexPath(indexPath){ 
     if indexPath.row == 0{ 
      print("User choose to buy ticket") 
      self.storyboard?.instantiateViewControllerWithIdentifier("SearchPage") 
     }else if indexPath.row == 1{ 
      print("User choose to check the train status") 
      self.storyboard?.instantiateViewControllerWithIdentifier("TrainStatusPage") 
     }else if indexPath.row == 2{ 
      print("User choose to see the upcoming trips") 
      self.storyboard?.instantiateViewControllerWithIdentifier("TripsPage") 
     }else if indexPath.row == 3{ 
      print("User wants to know mor about CFR's facility") 
      self.storyboard?.instantiateViewControllerWithIdentifier("PassengersPage") 
     } 
     } 
    } 

私は、セル(これは関係ありません)電池はグレーと何が起こっなるを押しています。

enter image description here

enter image description here

+0

私はこの時点でseguesで開始する方が良いだろう、と思います。 http://www.codingexplorer.com/segue-swift-view-controllers/を見てください –

答えて

0

あなたはおそらく次のViewControllerに移動する予定?そうすれば、インスタンスを初期化することは仕事の半分に過ぎません(もしこれが本当にやりたいことなら)。だから、以下のようなもの

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    var viewController: UIViewController? 
    if indexPath.row == 0 { 
     viewController = storyboard?.instantiateViewControllerWithIdentifier("SearchPage") 
    }else if indexPath.row == 1 { 
     viewController = storyboard?.instantiateViewControllerWithIdentifier("TrainStatusPage") 
    }else if indexPath.row == 2 { 
     viewController = storyboard?.instantiateViewControllerWithIdentifier("TripsPage") 
    }else if indexPath.row == 3 { 
     viewController = storyboard?.instantiateViewControllerWithIdentifier("PassengersPage") 
    } 

    if let destination = viewController { 
     navigationController?.pushViewController(destination, animated: true) 
    } 
} 
0

あなたはこのコードの行を使用する必要はありません。 _ = tableView.indexPathForSelectedRow! if let = tableView.cellForRowAtIndexPath(indexPath){

didSelectRowAtIndexPathメソッドで受け取ったindexPath.rowを確認してください。

だから、正しい方法は、次のようになります。

if indexPath.row == 0{ 
      print("User choose to buy ticket") 
      self.storyboard?.instantiateViewControllerWithIdentifier("SearchPage") 
     }else if indexPath.row == 1{ 
      print("User choose to check the train status") 
      self.storyboard?.instantiateViewControllerWithIdentifier("TrainStatusPage") 
     }else if indexPath.row == 2{ 
      print("User choose to see the upcoming trips") 
      self.storyboard?.instantiateViewControllerWithIdentifier("TripsPage") 
     }else if indexPath.row == 3{ 
      print("User wants to know mor about CFR's facility") 
      self.storyboard?.instantiateViewControllerWithIdentifier("PassengersPage") 
     } 

、あなたがセルから選択状態を削除するには、この行を追加することができます。

tableView(tableView: UITableView, didSelectRowAtIndexPath 
関連する問題