1

Objective-Cではまだかなりグリーンな感じがします-私の最初の「本物の」プロジェクトを構築し、早い段階でアーキテクチャの障害にぶつかりました。

ビューとナビゲーションを完全に「カスタム」環境で表示したいと思います。たとえば、組み込みのUIコントロール(UINavigationControllerやUITabBarなど)をすべて非表示にします。1つの特定の例(タイトルのように):「メイン」ビューからUIImagePickerControllerに直接移動し、次にUIImagePickerControllerから新しい3番目のビューに移動します。

これが私が使っている3つの主要なビューコントローラーです:

  • MainViewController(UIViewControllerのカスタムサブクラス。メインのNavが含まれ、通常はプライマリまたは「親」コントローラーです)
  • ImageEditViewController(保存された画像の上にいくつかのコントロールをオーバーレイするUIViewControllerのカスタムサブクラス)
  • UIImagePickerController(組み込みのAppleクラス)

これについてイメージできるアプローチがいくつかあります(ただし、どちらかを実行する方法がわかりません)。

  1. UINavigationControllerまたはUITabBar実装を使用しますが、どういうわけかシステムUIコントロールを非表示にして、独自の実装を行います。システムUIコントロールを非表示にする方法がわからないため、このアプローチはブロックされています。
  2. コード内の特定のポイントで、コントローラーからコントローラーまたはビューからビューへの遷移を手動で呼び出します。私はこの方法を好むのですが、コントローラー間のインスタンス化、管理、および移行に最適な「アプローチ」を見つけることができません。わからないことの例:メインのビューコントローラーから2番目のビューコントローラーを呼び出すにはどうすればよいですか?2番目から直接3番目のViewControllerを呼び出すにはどうすればよいですか?(または、少なくとも3番目に直接移行してください!)

ここには簡単な解決策があると思います。Appleのヘルパークラス以外でのビューとビューコントローラの管理については、まだ学んでいないことです。

4

2 に答える 2

2

どのシステムUIコントロールについて話しているのですか?ナビゲーションバー?

あなたはただすることができますmyNavigationController.navigationBarHidden = YES; のためにUINavigationCOntroller

ここのドキュメント。

必要なナビゲーションの種類については、実際にはユースケースによって異なります。階層またはワークフローを実現しようとしていますか?次に、おそらくナビゲーションコントローラーが必要です。各ViewControllerは、必ずしもワークフローに従わない個別の部分ですか?その後、タブバーコントローラーが機能する可能性があります。

タブバーの場合、次のようなことができるはずです。

myTabBarController.tabBar.hidden = YES;
[[myTabBarController.view.subviews objectAtIndex:0] setFrame:CGRectMake(0, 0, 320, 480)]; // or whatever your screen dimensions are
于 2012-07-18T20:07:49.627 に答える
1

1.ナビゲーションバーを非表示にするのは非常に簡単です。

self.navigationController.navigationBarHidden = YES;

TabBarを非表示にする場合これを使用します。

- (void) hideTabBar:(UITabBarController *) tabbarcontroller {


[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
for(UIView *view in tabbarcontroller.view.subviews)
{
if([view isKindOfClass:[UITabBar class]])
{
    [view setFrame:CGRectMake(view.frame.origin.x, 480, view.frame.size.width, view.frame.size.height)];
} 
else 
{
    [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, 480)];
}

}

[UIView commitAnimations];





}

- (void) showTabBar:(UITabBarController *) tabbarcontroller {

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
for(UIView *view in tabbarcontroller.view.subviews)
{

if([view isKindOfClass:[UITabBar class]])
{
    [view setFrame:CGRectMake(view.frame.origin.x, 431, view.frame.size.width, view.frame.size.height)];

} 
else 
{
    [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, 431)];
}


}

[UIView commitAnimations]; 
 }

2.2。

簡単に後方にナビゲートできるようにしたい場合は、ナビゲーションコントローラーを使用する必要があります。これにより、使い終わったときにビューコントローラーをポップできます。または、次のようなことを行うことができます(ナビゲーションコントローラーの外部):

CustomViewController *controller = [[CustomViewController alloc] init];

[self presentModalViewController:controller animated:YES];
于 2012-07-18T20:10:01.613 に答える