2017-04-11 1 views
1

내부에 UITableView가있는 MainViewController라는 재사용 뷰 컨트롤러가 필요합니다. 내 MainViewController의 많은 서브 클래스가 필요 많은 서브 클래스에서 UITableViewDelegate를 사용하여 UIViewController를 서브 클래스 화하는 방법

MainViewController

class MainViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 

@IBOutlet var tableView : UITableView! 

    override func viewDidLoad() { 

     super.viewDidLoad() 

     self.tableView.dataSource = self 
     self.tableView.delegate = self 
     self.tableView.scrollsToTop = true 

     self.tableView.estimatedRowHeight = 124.0 
     self.tableView.rowHeight = UITableViewAutomaticDimension 
} 

은 사용자 정의 그들을 내 요구의 따라 할 수 있습니다. IntroViewController가 그 중 하나입니다. 라인

self.tableView.dataSource = self 
에 대한

fatal error: unexpectedly found nil while unwrapping an Optional value 

:

UINavigationController

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

    if segue.identifier == "intro" { 

     let destination = segue.destination as! UINavigationController 
     let ivc = destination.topViewController as! IntroViewController 
    } 

} 

내가이 사고를 가지고 :

class IntroViewController: MainViewController { 

} 

여기, 내 SEGUE을 IntroViewController를 열려면

콘센트가 올바르게 연결되었는지 확인했습니다. 데이터 소스도 있습니다.

+0

StoryViewController 란 무엇입니까? –

+0

MainViewController, 수정했습니다. – cmii

+0

두 컨트롤러 사이의 탐색 컨트롤러. –

답변

0

당신이하려는 것은 실제로 그런 식으로 작동하지 않습니다. @ IBOutlets는 모두 스토리 보드를 통해 연결되어 있지만 사용하려는 패턴으로 "흐르지"않습니다.

그런 식으로하십시오. 이 SO 게시물에 살펴에게 토론과 답변을 가지고 : - 사용자 정의하지만, 수 - 당신의 목표는 "일반적인"테이블 뷰 컨트롤러를 사용하는 것 인 경우, 또는 How to subclass custom UIViewController in Swift?

을 별도의 UITableViewDelegateUITableViewDataSource 파일을 만들 수 있습니다, 플러스 시각적으로 설계된 셀을 분리 한 다음 원하는대로 코드를 통해 할당하십시오.

관련 문제