Ответ @William Brendel предоставил три разных варианта использования красивым способом.
Использовать случай 1:
В документации по документации java на этот предоставляет те же варианты использования.
Внутри метода экземпляра или конструктора это ссылка на текущий объект - объект, чей метод или конструктор вызывается. Вы можете обратиться к любому члену текущего объекта из метода экземпляра или конструктора, используя это.
Он охватывает два примера:
Используя это с полем и Используя это с конструктором
Используйте случай 2:
Другой вариант использования, который имеет не цитируется в этом сообщении:
this
может использоваться для синхронизации текущего объекта в многопоточном приложении для защиты критического раздела данных & amp; методы.synchronized(this){ // Do some thing. }
Использовать случай 3:
Реализация шаблона Builder зависит от использования
this
для возврата измененный объект.См. этот пост
Сохранение строителя в отдельном классе (свободный интерфейс)
Свойство window представления не является nil, если представление в данный момент видно, поэтому проверьте главное представление в контроллере представления:
Вызов метода view вызывает загрузку представления (если оно не загружено), что не нужно и может быть нежелательно. Было бы лучше сначала проверить, не загружено ли оно уже. Я добавил вызов isViewLoaded, чтобы избежать этой проблемы.
if (viewController.isViewLoaded && viewController.view.window) {
// viewController is visible
}
С iOS9 это стало проще:
if viewController.viewIfLoaded?.window != nil {
// viewController is visible
}
Или если у вас есть UINavigationController, управляющий контроллерами представления, вы можете вместо этого проверить его свойство visibleViewController.
Я использую это маленькое расширение в Swift 5, который сохраняет его простым и легким для проверки на любой объект, который является членом UIView.
extension UIView {
var isVisible: Bool {
guard let _ = self.window else {
return false
}
return true
}
}
Затем я просто использую его в качестве простого если проверка оператора...
if myView.isVisible {
// do something
}
я надеюсь, что это помогает! :)
Вы хотите использовать свойство UITabBarController
selectedViewController
. Все контроллеры представления, присоединенные к контроллеру панели вкладок, имеют установленное свойство tabBarController
, поэтому вы можете из кода любого контроллера представления:
if([[[self tabBarController] selectedViewController] isEqual:self]){
//we're in the active controller
}else{
//we are not
}