Подтвердить что ты не робот

Показать экран при первом запуске только в iOS

Tweetbot и Clear покажут при первом запуске приложения небольшой учебный экран, как работает приложение. Экран с небольшим учебником появляется только при первом запуске приложения (1 раз)

Как и с чем я могу сделать подобное? Может ли кто-нибудь подтолкнуть меня в правильном направлении?

Просмотр я имею в виду:

enter image description here

4b9b3361

Ответ 1

В вашем представленииDidLoad:

if (![@"1" isEqualToString:[[NSUserDefaults standardUserDefaults]
                                objectForKey:@"aValue"]]) {
    [[NSUserDefaults standardUserDefaults] setValue:@"1" forKey:@"aValue"];
    [[NSUserDefaults standardUserDefaults] synchronize];

    //Action here

}

Ответ 2

Я предполагаю, что Xcode на самом деле означает iOS.

Что вам нужно сделать, так это использовать класс NSUserDefaults для хранения флага, указывающего, видел ли пользователь ранее экран учебника.

Когда ваше приложение сначала загружается (или в тот момент, когда вы хотите решить, показывать или нет экран учебника), сделайте следующее:

if(![[NSUserDefaults standardUserDefaults] boolForKey:@"hasSeenTutorial"])
    [self displayTutorial];

Это проверяет сохраненные NSUserDefaults для текущего пользователя на значение с именем hasSeenTutorial, которое пока не существует. Поскольку он не существует, он называет displayTutorial. displayTutorial относится к вашему методу создания представления учебника. Вы можете понять эту часть.

Затем, как только пользователь закроет экран учебника:

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"hasSeenTutorial"];

Это значение будет сохранено для вашего профиля пользователя, то есть при следующем его проверке оно будет истинным, поэтому displayTutorial не будет вызываться.

Ответ 3

Конечно, если мы хотим сообщить пользователю что-то о функциях после обновления (не только приложение, запущенное в первый раз), то решение ниже может быть подходящим.

В вашем представленииDidLoad:

NSString *currentBundleVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];
NSString *previousBundleVersion = [[NSUserDefaults standardUserDefaults] objectForKey:@"PreviousBundleVersion"];

if (![currentBundleVersion isEqualToString:previousBundleVersion] ) {
     // Here you can initialize your introduction view and present it!
}

Как только пользователь закрывает ввод:

NSString *currentBundleVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];    
NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];

if (standardUserDefaults) {
    [standardUserDefaults setObject:currentBundleVersion forKey:@"PreviousBundleVersion"];
    [standardUserDefaults synchronize];
}

В этом случае версия приложения, хранящаяся в вашем стандартеUserDefaults, будет отличаться от текущей версии пакета только после обновления и показана только один раз, а также при первом запуске.

Ответ 4

Инициализируйте свои настройки по умолчанию с помощью BOOL, что-то называемое instructionsSeen (или как вам угодно) и установите его в NO в методе инициализации делегата приложения. В своем приложении проверьте это значение и если оно NO отобразите экран учебника. В рамках показа и отображения этого экрана установите instructionsSeen в YES и сохраните его в настройках по умолчанию.

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

Вы также можете показать демонстрацию для небольшого количества запусков (скажем, 3). В этом случае не используйте BOOL использовать число и увеличивайте его.

Ответ 5

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if (![defaults objectForKey:@"firstRun"]) {
    [defaults setObject:[NSDate date] forKey:@"firstRun"];
    [self displayTutorial];
}

Ответ 6

Версия Xamarin.iOS в приложении AppDelegate:

UIStoryboard storyboard = UIStoryboard.FromName("Main", null);

        if (NSUserDefaults.StandardUserDefaults.BoolForKey ("hasSeenTutorial") == false) {
            UIViewController vc = storyboard.InstantiateViewController ("StartPageViewController");
            this.Window.RootViewController = vc;

        } else {
            UIViewController vc = storyboard.InstantiateViewController ("NonStartPageViewController");
            this.Window.RootViewController = vc;

        }

        this.Window.MakeKeyAndVisible ();

В моем StartPageViewController у меня есть кнопка, которая устанавливает NSUserDefaults в true, поэтому при следующем запуске он начнет с NonStartPageViewController:

partial void RegisterButton_TouchUpInside (UIButton sender)
    {
        NSUserDefaults.StandardUserDefaults.SetBool(true,"hasSeenTutorial");
        NSUserDefaults.StandardUserDefaults.Synchronize();
    }

Ответ 7

Быстрая версия:

if !(NSUserDefaults.standardUserDefaults().boolForKey("seenTutorial")) {
            //Tutorial part
            NSUserDefaults.standardUserDefaults().setBool(true, forKey: "seenTutorial")
        }

Ответ 8

Каждый делает это более сложным и масштабируемым, чем нужно... Простое полное решение.

В ViewDidLoad:

if ([[NSUserDefaults standardUserDefaults] boolForKey:@"FirstLoadKey"]) {
    self.imageView.hidden = YES;
}else{
    self.imageView.hidden = NO;
    [[NSUserDefaults standardUserDefaults]setBool:YES forKey:@"FirstLoadKey"];
    [[NSUserDefaults standardUserDefaults]synchronize];
}