2009-04-09 3 views
3

私はタブバーや他のコントロールを使用していません - 私は基本的に現在のビューを別のビューコントローラに動的に(コードを介して)変更したいと思います。 (これは最良の例ではないかもしれないが、私はそれを単純化するためにしようとしている)iPhoneのためにビューをプログラム的に起動/破棄する方法は?

:私は、我々は3つのView Controllerを作成するとしましょう、例えば...全く

をInterface Builderのを使用していませんよ

View_Hello.m(および.H)

View_Goodbye.m(および.H)

View_Ciao.m(および.H)

我々ViewerAppDelegate L希望aunch View01_Hello。

View_Helloは、スワイプされた場合はView_Ciaoに移動する必要があるカスタムタッチメソッドを持ちますが、タッチした場合はView_Goodbyeになります。

どのように私はこれを行うことができます(と、 "ああ、あなたはこの例ではxxxのインターフェイス要素を使用する必要があります"と言ってはいけないことを任意のアイデア。)ビュー内のプログラム的なコントロールに基づいてビューをランダムに変更できる私が働いているアプリケーションの)

私は今週GoogleとStackOverflowを使ってサーフィンをしていましたが、3つのO'Reilly Cocoaの書籍(さらに3つのiPhone開発者用書籍)とそのすべてシンプルなインターフェイスを使用してください - しかし何も私がしようとしているような例を示していません。

===========

編集(@Andrewグラント):例えば

View_Ciao *viewCiao; 
-(void) viewDidLoad { 
    viewCiao = [[View_Ciao alloc] initWithNibName:@"View_Ciao" bundle:nil]; 
    [viewCiao.view setNeedsDisplay]; 
    [super viewDidLoad]; 
} 

このクラッシュ。ブリリアント:-)

=============

編集(@Daniel Dickison)

- 働いていました!

- (void)applicationDidFinishLaunching:(UIApplication *)application {  

    [window addSubview:viewController.view]; 
    [window makeKeyAndVisible]; 

    // create the second view, remove the first, and then display the second 

    viewCiao = [[ViewCiao alloc] init]; 
    [viewController.view removeFromSuperview]; 
    [window addSubview:viewCiao.view]; 
} 

答えて

1

どのようなものについて:

@interface AppDelegate : ... 
{ 
    View_Hello *hello; 
    View_Goodbye *goodbye; 
    View_Ciao *ciao; 
    UIViewController *currentView; 
    UIWindow *window; 
} 
... IBOutlet properties for the 3 controllers. 
@end 

@implementation AppDelegate 
- (void)switchToGoodbye 
{ 
    [currentView.view removeFromSuperview]; 
    [window addSubview:goodbye.view]; 
    currentView = goodbye; 
} 
... etc. 
@end 

あなたがウィンドウに追加する前にビューのサイズを変更する必要がある、との前と後のcurrentViewと新しいビューコントローラにviewWillDisappear:viewDidDisappear:viewWillAppear:viewDidAppear:を呼び出すことができ、それら削除/追加されました。

1

適切なビューをロードし、それをサブビューとして親に追加して、親から既存のビューを削除します。

ビューのレベルが1つしかない場合、ウィンドウは親です。

+0

上記のコメントを追加して、これが機能しないことを示しました。また、クラスごとにnibファイルを持つ必要がありますか?私はむしろ... –

+0

あなたのサンプルコードがクラッシュする理由はわかりませんが、私の提案のようには見えません。また、いいえ、nibファイルを使用する必要はありません。 –

2

あなたはErica SadunのiPhoneデベロッパーのクックのレシピ2-8「ビューをスワイプする」を見ましたか?彼女はtouchesBeganとtouchesMovedを使用してスワイプの方向を決定し、touchesEndedの方向に基づいてアニメーションを設定します。

どのビューに移行するかを決定するために、タップ検出を追加するためにこれを拡張または修正することができます。とにかく、レシピは見たいと思っている場合は69ページにあります。 video (mov) sample herecode sample here.

関連する問題