uiviewcontrollers間を移動するために自分のコントローラーを使用したいと思います。そのため、ビューの間にカスタムトランジションを設定できます。
私はうまくいくことをしましたが、それが正しい方法かどうかわかりませんか?後でメモリに関連する問題が発生する可能性はありますか?...すべてが正しい方法で割り当て解除されているかどうかはわかりません。
ご協力いただきありがとうございます!
これが私のコードです:
私のAppDelegateでは、起動時に次のようになります。
self.rootVC = [[[MenuView alloc] initWithNibName:@"MenuView" bundle:nil] autorelease];
[self.window addSubview:self.rootVC.view];
私のAppDelegateでは、UIViewControllerを切り替えるためのメソッドは次のとおりです。
-(void) changeRootController: (NSString*) ctrlName{
UIViewController *oldVC = self.curVC;
UIViewController *newVC;
if(ctrlName == @"Studio"){
newVC = [[StudioView alloc] initWithNibName:@"StudioView" bundle:nil];
}
else if(ctrlName == @"Menu"){
newVC = [[MenuView alloc] initWithNibName:@"MenuView" bundle:nil];
}
self.curVC = newVC;
[UIView transitionWithView:self.window
duration:1.0
options:UIViewAnimationOptionCurveEaseIn
animations:^{
newVC.view.transform = CGAffineTransformConcat(newVC.view.transform, CGAffineTransformMakeTranslation(-1024, 0));
[self.rootVC.view addSubview:newVC.view];
newVC.view.transform = CGAffineTransformConcat(newVC.view.transform, CGAffineTransformMakeTranslation(1024, 0));
oldVC.view.transform = CGAffineTransformConcat(oldVC.view.transform, CGAffineTransformMakeTranslation(1024, 0));
}
completion:^(BOOL finished){
if(finished){
[oldVC release];
}
}
];
}
そして、UIViewControllerのビューを次のように切り替えます。
AppDelegate *ad = (AppDelegate*)[[UIApplication sharedApplication] delegate];
[ad changeRootController:@"Studio"];