2017-09-14 11 views
0

ビューコントローラにテーブルビューが埋め込まれていて、ビューコントローラ内のどのセルがクリックされたかによって4つのビューコントローラにセグを設定できます。テーブルビュー(内部ビューコントローラ)Segueが動作しない

しかし、テーブルビューからビューコントローラにセグをコントロール+ドラッグする方法を理解できないようです。

私は、コードの該当部分は以下のようになり信じる:

import UIKit 

    class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { 
    let options = ["Home", "My Account", "Settings", "Support"] 

    //MARK: Properties 
    var selectedItem: String? 
    @IBOutlet weak var nameTextField: UILabel! 

    @IBOutlet weak var tableView: UITableView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
    } 

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath as IndexPath) 
     cell.textLabel?.text = options[indexPath.row] 
     return cell 
    } 

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return options.count 
    } 

    //MARK: Actions 
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
     if let selectedRow = tableView.cellForRow(at: indexPath){ 
      selectedItem = selectedRow.textLabel?.text 
     } 

     if selectedItem == "My Account"{ 
      performSegue(withIdentifier: "classifySegue", sender: self) 
     } else if selectedItem == "Settings"{ 
      performSegue(withIdentifier: "otherSegue", sender: self) 
     } 

    } 


} 

これは、ビューやストーリーボードのようになります。 Simulation Storyboard

問題は、現在のotherSegueは、ビューコントローラから来ていませんテーブルビュー自体

+0

https://stackoverflow.com/a/41887007/5461400 –

+0

あなたはtableview.viewのみをプッシュし、tableviewの親ビューコントローラからはプッシュしないことを意味しますか? – dhin

+0

はい、テーブルビューの行をクリックすると、その行のテキストに応じて、指定したビューコントローラに対して特定のセグを実行します。 – user3628240

答えて

0

テーブルビュー自体から来る必要はありません。 segueは、tableViewが含まれているVCから来るはずです。

あなた

performSegue(withIdentifier: "classifySegue", sender: self) 

があなたのViewControllerある自己から実行セグエを呼び出しているので、あなたのコードはまだ動作します

注:お使いのdidSelect機能で、あなたがする必要はありませんセルを再度取得してください。最初にセルに渡すテキストを取得しようとしているだけなので、selectedItemをself.options [indexPath.row]に設定してください。

+0

シミュレーションでセルをクリックしても機能しないのはなぜですか?ビューコントローラページの残りのコードを追加しましたが、何らかの理由でセルが次のビューコントローラにリンクしません。 – user3628240

+0

ブレークポイントを使ってselectedItemの値をチェックしようとしましたか?彼らは正しいのですか?私が言及したようにVCから次のViewControllerにセグを作ったのですか? –

+0

私はちょうどdidSelectRowに "Hello"を印刷しようとしましたが、何もコンソールには何も印刷されていなかったので、行をクリックしても関数が呼び出されていないようです。オーバーライドを前に置くと、スーパークラスのメソッドをオーバーライドしないというエラーが表示されました。私は何かの代わりに私のtableView "tableView"という名前ですか? – user3628240

0

StoryBoardはclickable/have'tなので、tableviewからのsegueは許可されていないので、tableView Cellからsegueを作ることができます。

関連する問題