2016-08-23 3 views
2

사전보기 컨트롤러에 선언 된 사전이 있습니다. 세부보기 컨트롤러에 대한 세그먼트를 통해 사전을 전달하고 싶습니다. 유일한 문제는이 방법을 완전히 달성 할 수 없다는 것입니다. ? 첫 번째보기 컨트롤러에서빠른 검색에서 segue를 통해 사전을 보내십시오.

사전 :

var items = [NSDictionary]() 

상세보기 컨트롤러 : 당신의 DetailViewController에서

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    var Pr : DetailViewController = segue.destinationViewController as! DetailViewController 

답변

1

var items = [NSDictionary]() -이 NSDictionary 요소의 배열이다. 당신이 NSDictionary을하고자하는 경우 - 대괄호없이 선언 할 수 보류 사전을 통과 할 것이다 당신이 재산을 선언해야 DetailViewController 지금

var items = NSDictionary() 

을. 그것은 이름이 정확히 동일 할 수 있습니다

class DetailViewController: UIViewController { 
    var items = NSDictionary() 
    /* ... */ 
} 

지금 당신이 (당신이 스토리 보드에 걸렸고 SEGUE 식별자를 사용한다) 사전을 전달하는 prepareForSegue를 사용할 수 있습니다

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "yourSegue" { 
     let Pr : DetailViewController = segue.destinationViewController as! DetailViewController 
     Pr.items = items 
    } 
} 
1

항목라는 변수를 추가합니다.

class DetailViewController : UIViewController { 
    var items : NSDictionary? 
} 

그런 다음 세그에 대한 준비에서 값을 설정하십시오.

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if let destView : DetailViewController = segue.destinationViewController as? DetailViewController { 
     destView.items = self.items 
    } 
} 
+0

꽤 낮은 품질의 대답을. 'DetailViewController'의'items' (또는'item'?) 속성은 OP 클래스의'items'를 허용하지 않습니다; 다른 DetailViewController에 다른 부분이 있다면, 그들은 아마도이 항목을 갖고 싶지 않을 것입니다. –

+0

OP는 그가 사전을 가지고 있지만 실제로 사전의 배열을 가지고 있다고 말했기 때문에 나는 그것을 잘못 입력했다고 생각했습니다. 비록 그것을 언급 했어야했다. OP는 FirstViewController에서 DetailViewController로 사전을 전달하려고한다고합니다. 이것이 바로 이것이하는 일입니다. – Yannick

+0

당신이 무언가를 취할 때, 당신은 내가 믿는 대답에 그것을 지적해야합니다. 귀하의 코드는 귀하의 가정하에도 컴파일되지 않으므로 아무런 성과가 없습니다. 빠르지 않고 짧고 자주 실수로 답변을 작성하지 말고 대신 품질을 시험해보십시오. –

관련 문제