2012-03-28 8 views
0
-(IBAction)loginButton:(id)sender;{ 
LoginViewController *login= [[LoginViewController alloc]initWithNibName:@"LoginViewController" bundle:nil]; 
[self presentModalViewController:back animated:YES];// I need a change here like below 
//[self.navigationController pushViewController:login animated:YES]; 
} 

ボタン操作で新しいビューを開き、上のコードでは、新しいビューが下から上に開きます。私はそれを左から右に開きたい。次のコードビューベースのプロジェクトの場合、新しいビューを左から右に開くように「既存のビュー」に「新しいビュー」を追加する方法

答えて

-1

試してみてください。

LoginViewController *login= [[LoginViewController alloc]initWithNibName:@"LoginViewController" bundle:nil]; 
UINavigationController *nav = [UINavigationController alloc] initWithRootViewController:login]; 
[self.navigationController pushViewController:nav animated:YES]; 

あなたはUINavigationControllerにあなたのUIViewControllerを追加する必要があり、その後、あなたがそれをプッシュすることができます。それはあなたの必要条件である左から右の効果を与えるでしょう。

+0

ナビゲーションコントローラを別のナビゲーションコントローラスタックにプッシュすると、例外が発生します。これは許可されていません。 –

+0

@MatthiasBauch:okey ...私はLoginViewControllerが既にUINavigationControllerの中にあると思っていました。 – Devang

1

viewControllerのmodalTransitionStyleプロパティを設定できます。許可transistions(UIModalTransitionStyleCoverVerticalUIModalTransitionStyleFlipHorizontalUIModalTransitionStyleCrossDissolveUIModalTransitionStylePartialCurl)の

しかし、どれもナビゲーションスタックにプッシュするときに取得アニメーションに等しいません。

これは仕様です。ビルトインアニメーションを使用すると、ユーザーはモーダルビューとプッシュビューを区別できます。
コンテンツを変更することなく、プッシュビューから前後に2回ナビゲートすることができます。しかし、モーダルビューは、彼が現在行っていることでユーザを中断させることを意図しています。例えば、ログインシートに記入する必要があるなどです。

プッシュされたviewControllerとモーダルviewControllerは、開発者が画面上に何かを表示するだけではありません。それらを任意に入れ替えることはできません。彼らは異なるセマンティクスを持っています。モーダルviewControllerがプッシュされたviewControllerのふりをするのは意味がありません。このようなことをしてはいけません。

実際にナビゲーションスタックが必要な場合は、現在のviewControllerをナビゲーションコントローラにラップし、ナビゲーションバーを非表示にすることができます。

+0

プラットフォームコンベンションに固執する!他のものと偽ったモーダルダイアログを作成することで、ユーザーと自分だけを混乱させます。これは正解です! – Sam

関連する問題