Я нашел еще одну проблему, вызвавшую эту проблему, и уже решил ее. Я случайно сохранил свой скрипт в кодировке UTF-16
. Похоже, что PHP5 не может распознать тег <?php
в 16-битной кодировке по умолчанию.
Лучше послушать UIApplication.didBecomeActiveNotification
. IOS отправляет это уведомление, когда приложение переходит с фона на передний план.
Вы можете установить обработчик для этого уведомления, например, в методе viewDidLoad
вашего контроллера.
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self,
selector: #selector(handleAppDidBecomeActiveNotification(notification:)),
name: UIApplication.didBecomeActiveNotification,
object: nil)
}
Ваш обработчик будет просто методом в том же контроллере представления для вызова при получении этого уведомления. В этом методе вы можете перезагрузить данные или сделать все, что захотите
@objc func handleAppDidBecomeActiveNotification(notification: Notification) {
reloadData()
}
И, конечно, не забудьте отменить регистрацию для UIApplication.didBecomeActiveNotification
, когда контроллер представления закрыт. Например, в методе deinit
контроллера
deinit {
NotificationCenter.default.removeObserver(self)
}
Таким образом, логика для перезагрузки и то, что запускает перезагрузку, будут запитаны в каждом контроллере представления, и делегат приложения не будет знать об этом лучше.
Вы можете справиться с этим из AppDelegate.
Использование дополнительного приложения стало активным методом.
func applicationDidBecomeActive(_ application: UIApplication)
Этот метод вызывается, чтобы приложение узнало, что оно перешло из неактивного в активное состояние. Этот метод следует использовать для перезапуска любых задач, которые были приостановлены (или еще не запущены), когда приложение было неактивным.
Отредактировано, чтобы показать, как получить нужный контроллер. Проверьте контроллер внутри него:
func applicationDidBecomeActive(_ application: UIApplication) {
let appDelegate: AppDelegate? = UIApplication.shared.delegate as? AppDelegate
if let controller = appDelegate?.window?.rootViewController {
if let navigationController: UINavigationController = controller as? UINavigationController {
let viewControllers: [UIViewController] = navigationController.viewControllers
for viewController in viewControllers {
// Check for your view controller here
}
} else if let viewController: UIViewController = controller as? UIViewController {
// Check for your view controller here
} else if let tabController: UITabBarController = controller as? UITabBarController {
// Narrow the hierarchy and check for your view controller here
}
}
}