0

トランジション ファイルを使用してページを切り替えるアプリがあります。私は ARC を使用しており、5.1 では問題なく動作しますが、4.3 シミュレーターでは常にクラッシュします。スレッドとインストルメントからの拡張詳細を見ると、2 行のコード (以下に示す) がエラー: EXC_BREAKPOINT (code=EXC_I386_BPT) で示されています。UIViewController の割り当てが解除されているようです。これを修正する方法がわかりません。あなたが提供できる助けを前もってありがとう!

@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;}];
}
4

1 に答える 1

0

ビューをそれぞれのビュー コントローラーの下から内外に移行するべきではありません。あなたはそれを機能させるかもしれませんが、せいぜい壊れやすいです。

コードを将来的に保証したい場合は、View Controller 間を移行し、それらに独自のビューを処理させる必要がありますが、デフォルトのアニメーションが気に入らない場合は、目的のアニメーションでラップします。したがって、次のいずれかを行う必要があります。

  1. シンプルなpresentViewControllerorpushViewControllerを実行して、次のコントローラーに移動し、dismissViewControllerorpopViewControllerを返します。また

  2. iOS 5 では、独自のコンテナー ビュー コントローラーを作成できます ( WWDC 2011 のセッション 102 を参照するか、UIViewController リファレンスのビュー コントローラー コンテインメントの説明を参照してください) transitionFromViewController

あなたのアプリの流れ、あなたがしていることをしている理由についてもっと知っていれば、おそらくさらにアドバイスできるでしょう.

于 2012-06-16T13:51:33.767 に答える