2012-01-11 16 views
0

私はこの質問に対する回答を簡単に見つけることができると思います。iOSのルートビューを再初期化する

私のアプリには、メインビューにユーザー、マイク、およびカメラから順々に他のビューを使用して収集する一連の情報が表示されます。 1つの大きなクライマックスの「送信ボタン」で終わるはずです。その時点で、データは安全に保存されます(現在はSQLデータベースに格納されていますが、これは別の話です)。

これが完了したら、プロセス全体を最初からやり直して、ビューを未使用状態に再初期化する必要があります。アンドロイドでは、私は新しい意図を投げて、古いものを破壊することができます。

私はアプリのデリゲートから始めるはずです(下記のコードを参照)。ここで問題は、ここからどこに行くのですか?

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    // Override point for customization after application launch. 
    self.mainViewController = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil]; 
    self.window.rootViewController = self.mainViewController; 
    self.mainViewController.managedObjectContext = self.managedObjectContext; 

    [self.window makeKeyAndVisible]; 
    return YES; 
} 
+0

'self.window.rootViewController = newMainViewController;' – Steve

+0

私はアプリケーションデリゲートからそれを呼び出しますか?モーダルビューコントローラに似た特殊な関数を作成しますか? – Rasman

答えて

0

このように、掘り下げて試行錯誤した後、私はそれが私が望む方法で動作するものを見つけました。

私は次のことを実行アプリデリゲートに特別な機能作成:メインビューコントローラから、私は

...

[(AppDelegate *)[[UIApplication sharedApplication] delegate] newScreen]; 

簡単パイとしてその関数を呼び出すその後

- (void) newScreen 
{ 
    self.mainViewController = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil]; 
    self.window.rootViewController = self.mainViewController; 
    self.mainViewController.managedObjectContext = self.managedObjectContext; 
} 

0

私は開始位置としてRootViewControllerを作成します。 rootViewControllerがロードされると、最初のデータ入力プロセスを初期化して追加します。このようにして、私がpopToRootViewControllerを呼び出すと、rootViewContoller Loadsが呼び出され、最初のデータ入力プロセスが再び初期化されロードされます。

関連する問題