2015-01-20 2 views
0

저는 SWIFT 코딩을 처음 접했습니다. 내 의도는 Viewcontroller1에서 Viewcontroller2로 값을 가진 2 개의 배열을 전달하는 것입니다. 그러나 그것은 Viewcontroller2에서 아무런 가치를 반환하지 않습니다. 누군가 제발 제게 조언 해 줄 수 있니?스위블은 2 개의 테이블 뷰 사이에서 배열을 전달합니다. 대신에 nil을 반환합니다.

다음은 ViewController1의 부분 코드입니다.

@IBAction func solve(sender: AnyObject) { 
     //pass information to the nextviewcontroller 
     func prepareForSegue (segue: UIStoryboardSegue!, sender: AnyObject!) { 
     if (segue.identifier == "Solve") { 
     var svc = segue!.destinationViewController as ViewController2 

     svc.toPass = self.force 
      svc.toPass2 = stiffness 

     } 
     } 

다음은 ViewController2의 부분 코드입니다.

class ViewController2: UITableViewController { 

    var toPass:[String]! 
    var toPass2:[String]! 

     override func viewDidLoad() { 
      super.viewDidLoad() 

      println(self.toPass) 
       println(self.toPass2) 
      // Do any additional setup after loading the view. 
     } 

전체 코드는 여기에서 찾을 수 있습니다. https://github.com/cherrythia/SWIFTpassingarrays/blob/master/README.md

+0

첫 번째 코드가 없습니다. 왜 함수 안에 함수가 있습니까? 또한 외부 링크가 신속하게 변경되어 나중에 이해할 수없는 질문이되기 때문에이 질문에 직접 필요한 코드를 게시하십시오. –

+0

두 값 모두 null이거나 그 중 하나입니다 (힘/강성) – Miknash

+0

첫 번째 기능은 사용자가 버튼을 클릭 할 때 prepareforsegue를 수행한다고 가정합니다. 전체 파일은 여기에서 찾을 수 있습니다. [링크] (https://www.dropbox.com/sh/trd8d5l40epkxme/AAAV2TomY8Uc6SwskBkF073wa?dl=0) @SebastianWramba –

답변

0

나는 (github 링크를 사용하여) 비슷한 프로젝트를 만들었고 @Sebastian Wramba가 정확합니다. 다음 두 가지 기능을 분리해야합니다.

@IBAction func solve_pressed(sender: AnyObject) { 
     self.performSegueWithIdentifier("Solve", sender: sender) 
    } 

override func prepareForSegue (segue: UIStoryboardSegue, sender: AnyObject!) { 
    if (segue.identifier == "Solve") { 
     var svc = segue.destinationViewController as ViewController2 

     svc.toPass = self.force 
     svc.toPass2 = stiffness 

    } 
} 

좋아요, 해결되었습니다. 이 특별한 경우에는 Segue 식별자를 "Solve"해야합니다. 첫 번째보기 컨트롤러에서 View Controller2로 이동을 선택하고 네 번째 탭으로 이동하여 식별자를 "Solve"로 설정합니다.

+0

@Sebastian Wramba. 감사! 제안대로 그것을 빌드하지만 내 ViewController2 내 ViewController1 배열 내의 값 대신 빈 배열 [], 여전히 인쇄합니다. 어떤 조언? 도움이 인정됩니다 –

+0

글쎄, 당신은 어떤 이유로 든 빈 배열을 보내는 것처럼 보입니다 ... 당신은 확인할 수 있지만 콘솔에 로그인 할 때 prepareForSegue 함수에 실제 배열이 있습니까? – Miknash

+0

prepareForSegue 함수를 사용하기 전에 배열에 값이 있는지 확인할 수 있습니다. 그러나 prepareForSegue 함수 중에 배열이 유효한지 확인하는 방법을 잘 모르겠습니다. 아니면 내가 어떻게 확인합니까? 참조 용 드롭 박스 링크에 스크린 샷과 파일을 올려 놓았습니다. [link] (https://www.dropbox.com/sh/k41rzgi893excuy/AAB62yOTqP0N0hV62demOW6Ia?dl=0) –