2012-06-16 3 views
0

전환 파일을 사용하여 페이지간에 넘겨주는 앱이 있습니다. 내가 ARC를 사용하고 5.1에서 정상적으로 작동하지만 4.3 시뮬레이터에서 항상 충돌합니다. 계측기에서 스레드와 확장 된 디테일을 살펴보면, EXC_BREAKPOINT (코드 = EXC_I386_BPT)와 함께 2 줄의 코드 (아래 그림 참조)를 가리 킵니다. UIViewController가 할당 해제 된 것처럼 보입니다. 이 문제를 해결하는 방법을 모릅니다. 제공 할 수있는 도움에 미리 감사드립니다!오류로 dealloc UIViewController에 전송 된 메시지 : EXC_BREAKPOINT (코드 = EXC_I386_BPT)

@synthesize containerView = _containerView; 
@synthesize viewController = _viewController; //ERROR LINE#1 

- (id)initWithViewController:(UIViewController *)viewController 
{ 
    if (self = [super init]) 
    { 
     _viewController = viewController; 
    } 
    return self; 
} 

- (void)loadView 
{ 
    self.wantsFullScreenLayout = YES; 
    UIView *view = [[UIView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame]; 
    view.autoresizingMask = UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth; 
    self.view = view; 

    _containerView = [[UIView alloc] initWithFrame:view.bounds]; 
    _containerView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight; 
    [self.view addSubview:_containerView]; 

    [_containerView addSubview:self.viewController.view]; 
} 

- (void)transitionToViewController:(UIViewController *)aViewController 
        withOptions:(UIViewAnimationOptions)options 
{  
    aViewController.view.frame = self.containerView.bounds; 

    [UIView transitionWithView:self.containerView 
         duration:0.65f 
         options:options 
        animations:^{ [self.viewController.view removeFromSuperview]; 
         [self.containerView addSubview:aViewController.view];} 
        completion:^(BOOL finished) 
    //ERROR LINE#2     { self.viewController = aViewController;}]; 
} 
+0

어디에서 transitionToViewController를 호출합니까? –

+0

각 페이지마다 ViewController가 있습니다. 여기에 내가 사용하는 코드 줄이 있습니다. TitlePageViewController * tpvc = [[TitlePageViewController alloc] init]; AppDelegate * appDelegate = [UIApplication sharedApplication] .delegate; [appDelegate.transitionController transitionToViewController : tpvc withOptions : UIViewAnimationOptionTransitionCurlUp]; – ctw

답변

0

각각의보기 컨트롤러 아래에서보기를 안팎으로 전환해서는 안됩니다. 당신은 그것을 작동하게 만들지 만, 기껏해야 허약합니다.

코드를 미래에 증명하려면보기 컨트롤러간에 전환해야하며 자신의보기를 처리하도록해야하지만 기본 애니메이션이 마음에 들지 않으면 원하는 애니메이션으로 감싸 야합니다. 그래서, 당신은해야 하나 :

  1. 그냥 presentViewController 또는 pushViewController 다음 컨트롤러와 dismissViewController 또는 popViewController 반환하기로 이동이 간편 할; 또는

  2. iOS 5에서는 자신의 컨테이너보기 컨트롤러 (session 102 in WWDC 2011 또는 view controller containment in the UIViewController reference 참조)를 수행 한 다음 transitionFromViewController을 사용할 수 있습니다.

귀하의 앱 흐름에 대해 더 많이 알고 계시다면, 귀하가하고있는 일을하는 이유를 알려주세요.

+0

도움 주셔서 감사합니다. 이 응용 프로그램은 짧은 동화입니다. 나는 더 나은 애니메이션 옵션을 제공한다고 생각해서 transitionController를 사용하기로 결정했다. 그러나 그것이 깨지기 쉬운 디자인 인 것처럼 보이기 때문에 간단한 pushViewController 메소드로 돌아갈 수 있습니다. WWDC에 대한 링크를 가져 주셔서 감사합니다. 도움이 될 수있는 다른 옵션이 있는지 살펴 보겠습니다. – ctw

+0

@ctw 직관적으로 직관이 페이지에서 페이지로 이동하면서 뷰 컨트롤러를 밀어 넣지 않으려한다면, 아마도 맞을 것입니다. 예전 학교에 가고 싶다면 아마도 표시된 페이지에 대한 자체 UIView 하위 클래스를 만들고 뷰 컨트롤러를 푸는 대신 페이지에서 페이지로 전환 애니메이션을 적용 할 수 있습니다. 그런데 [페이지 뷰 컨트롤러] (http://developer.apple.com/library/ios/#documentation/WindowsViews/Conceptual/ViewControllerCatalog/Chapters/PageViewControllers.html)도 확인해 볼 가치가 있습니다. – Rob

+0

@Ryan - 예, PageViewController는 내가하고 싶었던 것입니다! 하지만 각보기 컨트롤러를 사용하여 각 페이지를 설정하는 방법을 알지 못했습니다. 각 페이지가 정적 인 페이지처럼 보였습니다 ... 각 페이지마다 고유 한 xib가있는 새로운보기 컨트롤러를 설정할 수있는 곳이 아닌 것 같습니다. 나는 너무 좌절하여 포기했다. 나는 내가 돌아가서 또 한번 시도해 볼 것이라고 생각한다. – ctw