2012-04-03 3 views
1

SplitViewController 응용 프로그램에 문제가 있습니다. 마스터보기의 표에서 행을 선택하면 세부보기가 바둑판 식으로 바뀝니다. 문제는 새로운 인스턴스를 생성하거나 상세보기 컨트롤러를 다시로드 할 때마다 발생합니다. 인스턴스 뷰가 이미 인스턴스화 된 경우 세부 뷰를 이전 인스턴스로 바꿀 수있는 방법이 있습니까? 텍스트 필드에 입력하는 것과 같은 세부 정보보기 용 상태를 기억하고 싶습니다.새 인스턴스를 만드는 segue 바꾸기

+0

iPad 스토리 보드 (분할보기 컨트롤러 포함)로 작업하기 시작했는데 교체 대신 사용할 수있는 푸시 세그가 아닙니까? 아니면이 경우 프레임 워크가 밀어 넣기를 허용하지 않습니까? 이것은 아이폰 관용구에서 잘 작동합니다. – Rob

+1

나는 밀어 넣기를 시도했다. 그러나 내가 뒤의 운항을 원하지 않는다라고 정했다. 나는 매번 새로운 인스턴스를 만들었다는 것을 기억합니다. 나는 각 세부 ViewController를 마스터 ViewController의 속성으로 선언하고 첫 번째 세그먼트에서 인스턴스화하는 것으로 해결했습니다. 그런 다음 performSegue를 호출하지 않고 수동으로 인스턴스를 상세보기로 밀어 넣거나 팝합니다. –

+0

대체 방법을 사용하는 방법을 알고 싶습니다. 바꾸기 단절과 밀어 넣기 단절의 차이점은 무엇입니까? 대체 된보기 컨트롤러가 메모리에 남아 있으면 어떻게 복원 할 수 있습니까? – Matt

답변

2

할 수 없습니다. 거랑은 항상 내가이 SEGUE을 대체 사용하는 뷰 컨트롤러

1

의 인스턴스를하지만, MasterVC에 나는

-(BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender { 

    if ([identifier isEqualToString:@"showCalculatorViewController"]) { 

     if (self.splitViewController) { 

      NSObject *currentDetail = [self.splitViewController.viewControllers lastObject]; 

      if ([currentDetail isKindOfClass:[RootCalcViewController class]]) { 

.... 

가 그럼 난 기존 VC의 새로운 속성을 작성, 구현 및 NO 돌아갑니다.

그러나 masterVC에서 탐색을 처리하기 때문에 초기 디테일보기 컨트롤러로 UINAvigationController가 없습니다.

또한 AppDelegate에서 올바른 세부 VC를 설정해야합니다 .FlishLaunchingWithOptions 생성 된 코드는 그것이 UINavigationController라고 가정합니다. 생성 된 MasterViewController와 마찬가지로 viewDidLoad. UINAvigationController 세부 정보를 바꾸면 앱 충돌이 발생하지 않게됩니다.

다른보기 컨트롤러를로드 할 때 "대체 단락"을 바꿉니다.

0

또는 DetailController에서 Singleton 패턴을 구현하고 + new, + alloc 또는 all 같은 호출을 싱글 톤 메서드에 전달할 수 있습니다.

관련 문제