Не имеет смысла использовать пользовательские настройки по умолчанию, потому что они будут постоянными, даже если ваше приложение будет убито.Это означает, что если пользователь находится в чате, закрывает приложение, открывает его снова, ваше значение по умолчанию для пользователя будет означать, что пользователь все еще находится на экране чата.
Существует несколько способов отображения экрана чата.Он может быть представлен, может быть вставлен в панель навигации, внутри панели вкладок или даже добавлен в представление контента.Поэтому я бы сказал, что все же лучше использовать willAppear
и didDisappear
.Статическое значение должно сработать:
class ChatViewController: UIViewController {
static private(set) var currentVisibleInstance: ChatViewController?
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
ChatViewController.currentVisibleInstance = self
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
ChatViewController.currentVisibleInstance = nil
}
}
Теперь вы можете использовать это из любого места:
let isChatVisible: Bool = ChatViewController.currentVisibleInstance != nil
let currentChatController: ChatViewController? = ChatViewController.currentVisibleInstance
Естественно, вы можете поместить это currentVisibleInstance
в другой класс, если считаете нужным,Вы просто изменили бы на SomeOtherClass.currentVisibleChatViewController = self
.