2017-09-14 1 views
0

보기 컨트롤러에 테이블보기가 포함되어 있으며보기 컨트롤러의 셀을 클릭하면 다른보기 컨트롤러 4 개를 설정할 수 있기를 원합니다.표보기 (내부보기 컨트롤러) 작동하지 않는다

그러나 테이블 뷰에서 뷰 컨트롤러로 segue를 + 제어하는 ​​방법을 알아낼 수 없습니다.

나는 코드의 관련 섹션이 될 것이다 믿습니다 Simulation Storyboard

문제는 현재 otherSegue가보기 컨트롤러 및하지에서 온다 :

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) 
     } 

    } 


} 

이는보기 및 스토리 보드 것 테이블 뷰 자체.

+0

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

+0

당신은 tableview.view에서만 푸시하고 tableview의 부모 viewcontroller에서는 푸시하지 않겠습니까? – dhin

+0

네, 테이블 뷰의 행을 클릭 할 때 행의 텍스트에 따라 지정한 뷰 컨트롤러에 특정 세그먼트를 수행하기 만하면됩니다. – user3628240

답변

0

tableView 자체에서 올 필요가 없습니다. segue는 tableView가 포함 된 VC에서 가져와야합니다.

당신의

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

당신의 ViewController입니다 자기에서 수행 SEGUE를 호출하기 때문에 코드는 여전히 작동 할

참고 : didSelect 기능에서, 당신은 할 필요가 없습니다 을 다시 얻으십시오. 셀에 처음 전달한 텍스트 만 가져 오기 때문에 selectedItem을 self.options [indexPath.row]로 설정하면됩니다.

+0

시뮬레이션에서 셀을 클릭하면 왜 작동하지 않는지 아십니까? 뷰 컨트롤러 페이지에 대한 나머지 코드를 추가했지만 어떤 이유로 셀이 다음 뷰 컨트롤러에 연결되지 않습니다. – user3628240

+0

중단 점을 사용하여 selectedItem의 값을 확인하려고 했습니까? 그들이 맞습니까? 앞서 언급 한대로 VC에서 다음 ViewController로 segue를 만들었습니까? –

+0

didSelectRow에 인쇄 ("Hello")를 시도했지만 아무 것도 콘솔에 인쇄되지 않았습니다. 그래서 어떻게 든 행을 클릭 할 때 함수가 호출되지 않는 것처럼 보입니다. 오버라이드를 앞에두면 슈퍼 클래스의 메소드를 오버라이드하지 않는 오류가 발생했습니다. 그것은 내가 tableView라는 이름을 다른 이름 대신 "tableView"라고했기 때문입니까? – user3628240

0

StoryBoard는 clickable/have't action이 아니기 때문에 tableview에서 segue를 허용하지 않으므로 tableView Cell에서 segue를 만들 수 있습니다.