在iOS中重新初始化根视图

时间:2012-01-11 19:54:19

标签: ios uiviewcontroller rootview

有人会认为我可以很容易地找到这个问题的答案,也许我错过了,但是这里有。

我的应用程序包含一些视图,其中主视图显示从用户,麦克风和相机通过其他视图逐步收集的一堆信息。一切都应该以一个大的高潮“提交按钮”结束。此时数据安全存储(当前在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;
}

2 个答案:

答案 0 :(得分:0)

我会创建RootViewController作为我的起始位置。当rootViewController加载时,我会初始化并添加我的第一个数据输入过程。这样,当我点击提交时,我会调用popToRootViewController,当rootViewContoller加载时,它会初始化并再次加载第一个数据输入过程。

答案 1 :(得分:0)

所以经过一段时间的挖掘和反复试验。我发现了一些按照我想要的方式工作的东西。

我在app delegate中创建了一个特殊函数,它执行以下操作:

- (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];

很容易就像...