2012-01-11 23 views
0

有人會認爲我可以很容易地找到這個問題的答案,也許我錯過了,但這裏就是這樣。在iOS中重新初始化根視圖

我的應用程序包含幾個視圖,其中主視圖顯示一系列從用戶,麥克風和相機通過其他視圖逐步收集的信息。這一切都應該以一個大的高潮結束「提交按鈕」。在這一點上,數據被安全地存儲(目前在一個SQL數據庫中......但這是另一回事)。

一旦完成,我希望整個過程重新開始,這意味着將視圖重新初始化爲處女狀態。在android中,我可以拋出一個新的意圖並銷燬舊的意圖。

我收集我應該從應用程序委託開始(請參閱下面的代碼)。現在的問題是,我從哪裏出發?

- (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 2012-01-11 19:57:31

+0

我可以從應用程序委託調用它嗎?創建類似於模態視圖控制器的特殊功能嗎? – Rasman 2012-01-11 21:48:15

回答

0

所以經過公平的分享,並試驗和錯誤。我發現了一些按我想要的方式工作的東西。

我創建的應用程序委託一個特殊的函數執行:

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

然後從主視圖控制器,我調用該函數

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

容易餡餅...

0

我會創建RootViewController作爲我的起始位置。當rootViewController加載時,我會初始化並添加我的第一個數據輸入過程。這種方式當我點擊提交時,我會調用popToRootViewController,並且當rootViewContoller加載時,它會初始化並再次加載第一個數據輸入過程。