2017-01-27 2 views
0

Я пытаюсь представить предупреждение для пользователей при первом запуске приложения, чтобы дать им инструкцию о том, как его использовать. Я использую pod 'SCAlertView'. Когда я размещаю код в секции viewDidLoad() или ViewWillAppear(), код не выполняется, однако, когда я тестирую после разрешений, код выполняется. Вот следующий кодExecute alertView после разрешения устройства iOS

override func viewDidLoad() { 
    super.viewDidLoad() 

    if defaults.bool(forKey: "launchedBefore") == false{ 
     let alert = SCLAlertView() 
     alert.showInfo("Welcome to \(appName)", subTitle: "Swipe up on the bottom green button to find all your tools to navigate the app!") 
    } 

Кто-нибудь есть предложения о том, как я могу получить этот код, чтобы выполнить после разрешения для камеры & микрофона?

+1

Не пытайтесь представить предупреждение из 'viewDidLoad' или' viewWillAppear'; ваш взгляд еще не в интерфейсе. Подождите, пока 'viewDidAppear'. – matt

+0

Где и когда вы устанавливаете значение launchBefore? –

+0

Я извиняюсь за ошибку, исходный код был в 'ViewDidAppear' @matt. – Onicha21

ответ

0

Выполнение чего-либо сразу после запроса разрешений довольно сложно, поскольку знание о том, что разрешение было предоставлено, может возникнуть асинхронно. Мое решение состоит в том, чтобы написать служебную функцию, которая принимает обработчик завершения, а затем просматривает статус разрешения, при необходимости вызывая предупреждение о разрешении. Затем он вызывает этот обработчик завершения, только если у нас есть или получили разрешение.

+0

Код примера: https://github.com/mattneub/Programming-iOS-Book-Examples/blob/ master/bk2ch17p702takeAPicture/ch30p962takeAPicture/ViewController.swift – matt

+0

Предлагает ли предложение @matt ваш конкретный вопрос? Если это так, отметьте правильный. Если нет, сообщите нам, и мы постараемся помочь. –

Смежные вопросы