Мне интересно, есть ли способ получить делегат или что-то еще, когда на экране был показан конкретный UIView
?
Появился UIView?
Ответ 1
Попробуйте следующее:
– didAddSubview:
– willRemoveSubview:
– willMoveToSuperview:
– didMoveToSuperview
– willMoveToWindow:
– didMoveToWindow
- viewDidAppear:
Ответ 2
Если вы управляете своей логикой непосредственно внутри UIView, используйте:
- didMoveToSuperview
Если вы управляете своей логикой внутри UIViewController, используйте:
- viewDidAppear:(BOOL)animated
Ответ 3
Быстрая версия. Внутри класса UIView просто:
override func willMove(toWindow newWindow: UIWindow?) {
super.willMove(toWindow: newWindow)
if newWindow == nil {
// UIView disappear
} else {
// UIView appear
}
}
Ответ 4
Если вы управляете UIView
с помощью UIViewController
, вы можете использовать метод -viewDidAppear:
:
- (void) viewDidAppear:(BOOL) animated {
//do stuff...
[super viewDidAppear:animated];
}
Ответ 5
Еще один способ выяснить, когда элемент управления находится на экране, это создать подкласс View или Control и переопределить drawRect
...
Тем не менее, он вызывается, когда он нарисован, а не только когда впервые показан. Так что это только иногда, что вы хотите. Это сработало для моего случая. Обязательно позвоните также супер! знак равно