Intereting Posts
Удалить эффект размытия – ObjC Проект Xcode не создает / запускает с данными ядра, когда целью является мой iPhone 5c Инструмент «Профилирование, утечки» приводит к сбоям в работе инструментов быстрый градиент контроллера просмотра страницы Фоновая музыка, выгнутая при запуске игры Unity3D ограничение скорости передачи данных nsurlconnection для приоритезации других Размещение метода суперкласса в дочернем классе SwiftyJSON сохраняет возвращаемые пустые объекты MDM JavaPNS – конвертировать токен устройства в значение Hexa. (32-байтовое двоичное значение до 64 символов Hex) Сопоставление основных данных: двойные кавычки в выражении ценности автоматически превращаются в одинарные кавычки Самый простой способ добавить iAd / Admob в раскадровку uitableviewcontroller? Не удалось запустить «Имя приложения», запуск процесса не выполнен: Unspecified? Как вставить объект UIActivityIndicator в текстовое поле панели поиска? Секундомер анимации TableView Создание пользовательской клавиатуры Jailbreak для iOS

Отображать метки трендов, когда пользователь запускает приложение впервые 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 */ }