2017-08-31 5 views
0

プロトタイプセルを、別のビューコントローラにつながる2つの異なるセグウェイパスに接続しようとしています。別の記事では、ソースビューコントローラ自体からビューコントローラへのプロトタイプセルではなく、デスティネーションビューコントローラまで、セグを接続する必要があります。スイフトで2つの異なるエッジを持つプロトタイプセル

ソースビューコントローラは、buildviewViewControllerと呼ばれ、tableviewセルが設定されています。私は、セルをクリックすると、ルートビューコントローラでログインボタンまたはゲストボタンがクリックされたかどうかに基づいて、宛先ビューコントローラを開くアプリケーションに取り組んでいます。 (buttonClickedは、ユーザがルートビューコントローラ上でクリックしたボタンを格納するインスタンス変数です)。

しかし、BuildsViewControllerのセルをクリックすると、何も起こりません。どこで私は間違えましたか?ログインボタンにはタグ0、ゲストボタンにはタグ1が付いています。

 func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    switch self.buttonClicked?.tag { 
    case 0?: 
      performSegue(withIdentifier: "showLogin", sender: self) 
      break; 
    case 1?: 
      performSegue(withIdentifier: "showGuest", sender: self) 
      break; 

    default: 
     preconditionFailure() 
    } 
} 



    override func prepare (for segue: UIStoryboardSegue, sender: Any?) { 


    switch segue.identifier { 
    case "showLogin"?: 

     if let row = self.tableView.indexPathForSelectedRow?.row { 

      let build = self.buildStore.allBuilds [row] 
      let detailBuildsViewController = segue.destination as! BuildDetailViewController 
       detailBuildsViewController.build = build 
      break; 
     } 
    case "showGuest"?: 


     if let row = self.tableView.indexPathForSelectedRow?.row { 

      let build = self.buildStore.allBuilds [row] 
       let detailBuildsViewControllerGuest = segue.destination as! BuildDetailViewControllerGuest 
       detailBuildsViewControllerGuest.build = build 
      break; 
     } 
    default: 
     preconditionFailure("Unexpected segue identifier") 
     } 
    } 
    override func tableView (_ tableView: UITableView, 
         cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

    let cell = tableView.dequeueReusableCell(withIdentifier: "UITableViewCell", for: indexPath) 
    let build = buildStore.allBuilds [indexPath.row] 
    cell.textLabel?.text = build.name 

    return cell 

} 

ありがとうございます!

+0

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)

は、あなたの 'cellForRowAt'コード –

+0

あなたdidselectメソッドが呼び出されるを表示します? – luckyShubhra

+0

ああそうです。私はdidselectメソッドをオーバーライドする必要があり、メソッドのシグネチャは間違っています。私は今それを修正した。それは美しく動作します!ありがとう! @luckyShubhra –

答えて

0

スウィフト3は、didSelectRowAtIndexPathメソッドのシグネチャを変更しました。スーパークラスメソッドをオーバーライドするには、メソッド名にオーバーライドを追加する必要があります。

置き換えます

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 
関連する問題