2010-12-21 7 views
0

画面の右側からビューコントローラを開きたいとします。画面の右側から別のビューコントローラビューを開く

[自己presentModalViewController:PVCアニメーション:YES]

を行う上で、

私は、その画面の右からスライドする代わりに、それは画面の下から来ているかのように表示されているかのように表示されるように、他のViewControllerのビューを望む:)

どのように私はそれを達成することができます。助けてください:)

答えて

1

UINavigationController - Class Referenceを参照してください。これにより、側面からスライドする階層を整理できます。またはUIView animation blocksで遊ぶこともできます。あなたのアプリにとって何がベストかを見極める。カテゴリーのように、側面から押し出すことがいくつかある場合は、UINavigationControllerを使用してください。横から入ってきて、そのまま放置したいと思っているシンプルなビューがあれば、UIViewアニメーションやその他のアニメーションメソッドを使いたいでしょう。 UIViewのアニメーションは、次のようになります。

[UIView beginAnimations:nil context:nil]; 
//code to move view on to screen 
[UIView setAnimationDuration:0.5]; 
[UIView commitAnimations]; 
2

あなたが探しているものは、UINavigationControllerです。

あなたは applicationDidFinishLoadingにこのような行がありますあなたのアプリケーションのデリゲートで

[window addSubview:viewController.view]; 

変更をこれらにその行:

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:viewController]; 
[window addSubview:navController.view]; 

の代わりに、あなたが行うことができます[self presentModalViewController:pcv animated:YES];

[self.navigationController pushViewController:pcv animated:YES]; 

これは、右のアニメーション。 Plusを使用すると、アプリ内のビュースタックとナビゲーションをより適切に制御できます。あなたのアプリのナビゲーションを制御するための最良の方法です。

ps:navControllerが今すぐリークします。これは私の例のように、私が何をしているのかを見ることができます。 deallocにリリースできるように、navControllerをアプリデリゲートの.h内のiVarにしたいと思うでしょう。今のようにリリースすれば、メッセージを送信することはできません。

+0

やあ、あなたはあなたがあなたがそれを解放することができますので、アプリのデリゲートの.hの中からNavControllerにIVARを作成したいと思う」によって何を意味するかを詳細に説明してくださいすることができますdealloc "申し訳ありません、私はこの分野の初心者です:) – Fatema

+0

ok ... :)基本的に2つのタイプの変数があります。あなたは "ローカルスコープ"変数を持っています。これらはクラス内のメソッドで宣言したオブジェクトです。彼らはそのメソッドにスコープしか持たず、そのメソッドからアクセスできません。次に、「グローバルスコープ」変数があります。これらは、クラスの先頭に宣言したオブジェクト(.hファイル)で、クラス全体でアクセスできます。上記の私のコードの問題は、スコープが 'applicationDidFinishLoading:'メソッドなので、そこにオブジェクトを解放しないと、再びオブジェクトにアクセスすることができないため、メモリリークが発生します。 –

+0

...他の場所。だからあなたが本当に必要とするのは、それをグローバル変数、またはiVarとして宣言することです(私が見たように... /)。これを行うには、WhateverAppDelegate.hに行き、 '@interface WhateverAppDelegate ... {'の行の後にあなたの変数を宣言したいとします。したがって、「UINavigationController * navController;」と入力してください。それから、 'applicationDidFinishLoading:'のコードを 'navController = [[UINavigationContr ...]に変更してください(すでに変数を宣言しているので)次に 'dealloc'メソッド(最下部)に' [navController release];を入れてください。 –