2014-10-12 2 views
0

Я работаю над приложением, и я хочу реализовать учебник, который запускает первое время, когда приложение запускается на телефоне. Я уже настроил NSUserDefaults и могу успешно определить и пометить приложение после его запуска в первый раз. Теперь моя проблема переместилась с контроллера Tutorial View Controller на главный контроллер представления.Создание ViewController для запуска только при первом запуске приложения iOS

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

Каков наилучший способ его реализации? Я думал показать его как Модальное представление, и его главный контроллер отображает его, если он обнаруживает первый прогон. Какие-либо предложения?

Обратите внимание, что я не использую раскадровки

ответ

0

Я бы поступил с вашим представлением модального над вашим контроллером корневого представления при обнаружении первого запуска.

Используйте presentViewController:animated:completion:, чтобы отобразить его, с анимированным: установите значение NO. Таким образом, он появится поверх контроллера корневого представления и закроет его. Затем, когда вы закончите с первым контроллером представления, вы можете отменить его и открыть под ним контроллер корневого представления.

+0

Спасибо большое :) –

+0

У меня есть вопрос о последующей деятельности, если вы не возражаете. В настоящее время я обнаруживаю FirstLaunch в ViewDidLoad, где я обращаюсь к UserDefaults, а затем устанавливаю целочисленный Object в своем классе как 1 или 0 соответственно. Затем в моем ViewWillAppear я создаю условие If, которое проверяет это целое число, я построил его так, чтобы избежать необходимости доступа к UserDefaults каждый раз, когда вызывается viewwillappear. Что вы думаете об этом подходе? И вы думаете, что есть лучшее место для проверки FirstLaunch? –

2

Проще говоря, выбрать корневой контроллер представления программным способом. Что-то вроде:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    if ([self isFirstLaunch]) 
    { 
     self.window.rootViewController = [TutorialViewController new]; 
     [self setFirstLaunch NO]; 
    } 
    else 
    { 
     self.window.rootViewController = [MyRegularRootViewController new] 
    } 
    [self.window makeKeyAndVisible]; 

    return YES; 
} 
+0

Или, возможно, как ребенок rootViewController и управлять им. – KirkSpaziani

+0

Я собирался пойти с аналогичной реализацией, однако я был смущен, как вернуться к контроллеру RegularView после завершения учебника. –

+2

Это обычно вызывает больше проблем, чем решает. Иерархия контроллера представления заканчивается в первом запуске, чем при последующих запусках. И вы не можете избавиться от «разового» контроллера первого взгляда, как только вы закончите с ним. Он сохраняется для всего первого запуска приложения, занимая память, хотя он больше никогда не будет использоваться. Гораздо лучше отобразить «одноразовый» VC поверх обычного корневого представления, а затем отпустите его, как только вы закончите с ним. –