2013-09-27 10 views
2

여기에 새로운 ios가 있으므로 나와 함께하시기 바랍니다. 나는 주보기 컨트롤러 (mvc) 테이블 뷰 컨트롤러 (tc1) segues 있어요. TC1에서의 tableview위한NSArray를 세그 (segue)에 전달하면 다른 세그 (segue)로 전달됩니까?

+--------+  +--------+  +--------+ 
|  |  |  |  |  | 
| mvc |---->| tc1 |----->| tc2 | 
|  |  |  |  |  | 
|  |  |  |  |  | 
+--------+  +--------+  +--------+ 

데이터 MVC의 prepareForSegue의 어레이로 전달된다 TC1의 행을 터치하면 , 그것은 제의 tableview를 표시 (TC2)에 segues. tc1.h에 정의 된 속성에로드하고 있습니다.

tc1이 tc2 테이블 뷰에 대해 prepareForSegue을 시작하므로 tc2가 채워지는 유일한 방법은 두 개의 어레이를 tc1에 전달하는 것입니다. 하나는 tc1 테이블 뷰이고 다른 하나는 tc1이 tc2로 전달되는 것입니다 (prepareForSegue). 이 작업을 수행하는 더 좋은 방법이 있습니까?

답변

0

사용중인 배열이 일부 모델의 일부인 것으로 가정합니다. 별도의 모델 클래스 계층 구조 및 가능한 DataAdapter (모델의 컨텍스트로 작동하는 클래스)를 만듭니다. 따라서 컨트롤러를 제시 할 때 어댑터에서 데이터를 요청할 수 있습니다 (예 : self.users= [[DataAdapter instance] allUsers];).

전달중인 데이터가 임시로 표시하는 데 사용되거나 모델의 일부가 아닌 경우 prepareForSegue 호출에서 전달하는 데 아무런 문제가 없습니다.

+0

감사합니다. 나는 방금 후자의 방식으로 그것을 끝내었다. 그것은 가장 효율적인 것처럼 보이지 않지만 그것이 때로는 방법입니다. 배열 데이터는 모두 전달되는 R/O입니다. – wufoo

0

테이블 1과 2 모두에 대해 별도의 uiviewcontroller 클래스 사용을 고려하십시오. 스토리 보드를 사용한다고 가정 할 때, 이는 각 뷰 내에 테이블 뷰가 중첩 된 두 개의 뷰 컨트롤러를 의미합니다. viewcontroller를 segues와 연결하고 이름을 지정하십시오.

머리말 가져 오기를 잊지 말고 적절한 특성을 선언하십시오. 익숙한 prepareforsegue 메소드를 사용하고 b. 전달 된 데이터로 표 행을 채 웁니다.

+0

tc1과 tc2는 실제로 각각 별도의 TabeViewController를 가지고 있습니다. 문제는 tc1이 주 ViewController에서 segue이고 tc2가 tc1의 TableViewController에서 segue'd 인 것입니다. 나는 당신이 main VC로 돌아 가기 위해 tc1을 요구할 것이라고 생각하고, main으로부터 그 TVC를로드하기 위해 다른 TableViewControllerler와 함께 prepareForSegue를 내린다. tc1에 tc2 데이터 배열을 전달하는 것이 바람직하지 않은 해결책으로 보이기 때문에 오해를 불러 일으킬 것입니다. – wufoo

관련 문제