2014-07-26 1 views
0

보기 컨트롤러 1과보기 컨트롤러 2 사이를 전환 할 것으로 예상되는 2 개의 버튼이 있습니다. 치명적인 오류 : 나는 오류가 계속 두 번째 뷰 컨트롤러로 전환 내 버튼을 클릭 할 때 랩을 해제 할 수 없습니다 Optional.None빠른보기에서 한보기에서 다음보기로 이동

var settings : UIButton = UIButton(frame: CGRectMake(0, 0, 40, 40)) 

    settings.setTitle("S", forState: UIControlState.Normal) 
    settings.backgroundColor = UIColor.blackColor() 
    settings.center = (CGPointMake(120, 30)) 
    settings.layer.cornerRadius = 8 
    settings.addTarget(self, action: "settingsBar:", forControlEvents:UIControlEvents.TouchUpInside) 
    settings.layer.borderWidth = 3 
    settings.layer.borderColor = UIColor.grayColor().CGColor 
    view.addSubview(settings) 

@IBAction func settingsBar(sender: AnyObject){ 

    let view2 = self.storyboard.instantiateViewControllerWithIdentifier("view2") as? 
     ViewController2 
    self.navigationController.pushViewController(view2, animated: true) 
} 

답변

0

당신이 어디를 우리에게 실제 라인을 말한다면 그것은 도움이 될 것입니다 오류가 표시되지만 다음과 같이 가정합니다.

self.navigationController.pushViewController(view2, animated: true) 

해당 행에 오류가 발생할 수있는 이유는 세 가지가 있습니다. pushViewController이 아닌 것으로 예상되는 경우 view2nil과 관련되어 있습니다.

  1. 는 "뷰 2"라는 이름의 스토리 보드에는 뷰 컨트롤러가 없습니다 : 즉, instantiateViewControllerWithIdentifiernil를 반환 될 것입니다. 그런 다음 view2nil이고 pushViewControllernil을 푸시하려고 시도하면 오류가 발생합니다.
  2. "view2"라는보기 컨트롤러의 유형이 ViewController2이 아닙니다. 이 경우 as?을 사용하는 변환은 nil을 반환하며 pushViewController이 어서 트하도록 유도합니다.
  3. 내보기 컨트롤러 (질문의 코드가있는 코드)는 실제로 내비게이션 컨트롤러에 포함되어 있지 않습니다. 결과적으로 self.navigationControllernil이됩니다. 당신이 nilpushViewController를 호출 할 때, 당신은
+0

난 당신이 그 오류를 얻을 수있는 세 번째 이유 잊어 – user3856516

+0

user3856516 @ 뷰 2로 설정 신원과 ViewController2로 설정 뷰 컨트롤러가 수행하여 오류 얻을. 나는 나의 대답을 업데이트했다. – drewag

관련 문제