Intereting Posts
Должно ли IOS Значительное изменение местоположения пробудить мое приложение после перезапуска * заблокированного телефона? Дополнение к удаленному порту расширения Xamarin Открывает отслеживание с помощью Parse Как переключаться между двумя цветами в UIView с помощью UITapGestureRecognizer Есть ли способ получить обновленный счетчик значков от QuickBlox в iOS? Как я могу установить логотип в панели навигации для всех контроллеров просмотра из центрального места iOS Monotouch – Как установить Frame перед ViewDidLoad ()? Связывание MBProgressHUD с моим проектом XMPPFramework – сообщение чата группы отправки в iOS не выполнено Как открыть настройки из моего приложения iPad (Objective-C) Просмотр в виде клавиатуры перепутался с представленным в режиме просмотра представлением с использованием UIViewControllerTransitioningDelegate GCM для iOS, gcm-соединитель никогда не называется Как сделать новую строку в описании параметров документации функций в XCode5? Отладка приложения во время тестирования пользовательского интерфейса iOS 7 и 8 делают холст размытым на iphone 5 и 6

Отображать метки трендов, когда пользователь запускает приложение впервые Swift 3

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

Я обыскал интернет, но не смог найти простого решения. О, я довольно новичок в Swift, поэтому, пожалуйста, будьте осторожны. 🙂

EDIT: Вот что я использовал. Прекрасно работает!

override func viewDidAppear(_ animated: Bool) { if !UserDefaults.standard.bool(forKey: "isSecondTime") { let launchedBefore = UserDefaults.standard.bool(forKey: "isSecondTime") if launchedBefore { print("Not the first launch.") } else { let VC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "CoachMarksViewController") self.present(VC, animated: true, completion: nil) print("This the first launch.") UserDefaults.standard.set(true, forKey: "isSecondTime") } } } 

Для этого вы должны использовать «UserDefaults». В вашем методе viewDidLoad проверьте, допустимо ли значение «isSecondTime == true» (это значение вы получите из «UserDefaults»), а затем ничего не делайте иначе, покажите свое учебное пособие и сохраните значение «isSecondTime = true» в « UserDefaults». Он будет работать в соответствии с вашими требованиями. Проверьте этот код:

 if(NSUserDefaults.standardUserDefaults().boolForKey("isSecondTime")) { // app already launched } else { // This is the first launch ever // show your tutorial.....! NSUserDefaults.standardUserDefaults().setBool(true, forKey: "isSecondTime") NSUserDefaults.standardUserDefaults().synchronize() } 

Для Swift 3:

 let launchedBefore = UserDefaults.standard.bool(forKey: "isSecondTime") if launchedBefore { print("Not first launch.") } else { // // show your tutorial.....! print("First launch, setting UserDefault.") UserDefaults.standard.set(true, forKey: "isSecondTime") } 

Наверное, это то, что вам нужно?

 override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated); let kFirstLaunch = "First_launch" if (UserDefaults.standard.object(forKey: kFirstLaunch) == nil) { UserDefaults.standard.set(1, forKey: kFirstLaunch); //Show your coach marks here } } 

Поэтому вам нужно указать bool, чтобы указать, показывать ли тренеры / учебники тренера, которые сохраняются в приложении, которое завершается и перезапускается. При первом запуске приложения bool укажет, что метки тренера должны быть отображены, тогда приложение установит bool, чтобы указать, что они больше не требуются.

Чтобы сохранить bool, вы можете использовать UserDefaults для хранения bool и прочитать его при запуске приложения. Вот ссылка на документацию Apple на нем.

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

Вы должны использовать этот маленький диспетчер запуска 🙂

 enum AppLaunchManager { // MARK: - Private Attributes private static let launchesCountKey = "LaunchesCount" // MARK: Public Enum Methods static func launchesCount() -> Int { guard let launched = UserDefaults.standard.value(forKey: launchesCountKey) as? Int else { return 0 } return launched } static func registerLaunch() { UserDefaults.standard.setValue(launchesCount() + 1, forKey: launchesCountKey) } static func isFirstLaunch() -> Bool { return launchesCount() <= 1 } } 

И в AppDelegate:

 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool { AppLaunchManager.registerLaunch() return true } 

Затем, когда вам нужно просто использовать:

 if AppLaunchManager.isFirstLaunch() { /* do whatever you need */ }