2011-08-27 5 views
0

FirstviewController에 NSMutable 배열이 있습니다. 해당 배열의 객체를 SecondViewController에있는 다른 NSMUtable Array에 복사하려고합니다. 는 그러나 FirstViewController 및 SecondViewController 다른 탭다른 탭에있는 배열 객체를 복사하는 방법

주 (내 응용 프로그램의 rootController는 tabBarController입니다) : : 애니메이션 firstViewController : self.navigationController과 pushViewController YES] 나는 그것은 작동 알고; 하지만 내 케이스처럼 viewControllers가 다른 탭에있을 때 어떻게 할 수 있습니까?

제발 도와주세요. 덕분에 고급. 아래 코드 drink에서

답변

2

있습니다 ... detailViewController 클래스와 drinks의 배열은 내가 다른 클래스로 이동하여 다른 클래스의 배열을 초기화 할 원하는 위치에서 current 클래스의 배열입니다 이 유형의 패턴을 수행하는 몇 가지 방법 :

  1. 위임. 이것은 하나의 뷰 컨트롤러가 포인터를 전달함으로써 다른 뷰 컨트롤러에 알릴 수있는 곳입니다. 먼저 컨트롤러 1을 어딘가에 만들고 컨트롤러 1을 만든 후에 컨트롤러 2에 컨트롤러 1의 공용 인스턴스 변수에 액세스 할 수 있도록 알려줍니다.
  2. 알림. 청취를 위해 등록 할 알림 시스템을 통해 개체를 보낼 수 있습니다. 여기서 컨트롤러 2는 컨트롤러 1이 필요할 때 보낼 특정 알림을 수신합니다.
  3. 전역 변수. 여기서 각 뷰 컨트롤러가 아닌 App Delegate 또는 루트 뷰 컨트롤러와 같은 모든 곳에서 액세스 할 수있는 전역 위치에 배열 객체를 저장합니다.

더 많은 디자인 패턴이 있지만 이러한 유형의 설정에 가장 적합한 방법입니다. 이에 대한 자세한 내용은 Apple에서 제공 한 Cocoa Fundamentals Guide을 확인하십시오.

+0

을 언급 한 @coneybeare 옵션을 선택해야한다고 생각합니다. 가능한 경우 NSNotifications 사용 방법에 대한 예제 코드를 제공하십시오. 어쨌든, 내 자신을 시도하는 것이 더 낫다. – sajaz

+0

필자가 제공 한 링크는 많은 예제를 제공하고 있으므로 검색은 그렇게 할 것이다. – coneybeare

1

DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil]; 
    detailViewController.drink = [self.drinks]; 
    [self.navigationController pushViewController:drinkDetailViewController animated:YES]; 
[detailViewController release]; 
+0

감사합니다. 네, 사용할 때 작동합니다 [self.navigationController pushViewController : drinkDetailViewController animated : YES]; ,하지만 내 경우에는 내보기 컨트롤러가 다른 탭에 있기 때문에 이것을 사용할 수 없습니다. 나는 당신의 도움을 많이 준 덕분에 – sajaz

관련 문제