переинициализировать корневой вид в iOS - PullRequest
0 голосов
/ 11 января 2012

Можно подумать, что я легко могу найти ответ на этот вопрос, и, возможно, я пропустил его, но здесь идет.

Мое приложение содержит несколько представлений, из которых основное представление отображает кучу информации, которую оно постепенно собирает от пользователя, микрофона и камеры через другие представления. Все это должно закончиться одной большой климатической «кнопкой отправки». В этот момент данные безопасно хранятся (в настоящее время в базе данных 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;
}

Ответы [ 2 ]

0 голосов
/ 12 января 2012

Так что после значительной доли копаться и проб и ошибок.Я нашел то, что работает так, как я хочу.

Я создал специальную функцию в делегате приложения, которая выполняет следующее:

- (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 голосов
/ 12 января 2012

Я бы создал RootViewController в качестве моей начальной позиции. Когда rootViewController загружается, я инициализирую и добавляю свой первый процесс ввода данных. Таким образом, когда я нажимаю «Отправить», я вызываю popToRootViewController, а когда загружается rootViewContoller, он инициализируется и снова загружает первый процесс ввода данных.

...