#ios #uiview
#iOS #uiview
Вопрос:
Меня особенно интересует, чтобы вспомогательный UIView получал уведомление о том, что один из его предков UIViews был удален из иерархии.
Я знаю об обратных вызовах в UIViewController, но это не решает проблему уведомления вспомогательных UIView о том, что они были удалены из иерархии, если я вручную не пройду все подвиды и, в свою очередь, не уведомлю их о том, что они больше не отображаются.
Ответ №1:
Вы можете подклассировать UIView
и реализовать метод willRemoveSubview:
.
Из документов Apple:
Сообщает представлению, что вложенный вид будет удален.
- (void)willRemoveSubview:(UIView *)subview
Комментарии:
1. Я хочу знать, когда удаляется родительский или родительский родительский (предок), а не дочерний вид.
2. Вы пытаетесь наблюдать
superview
за свойством?3. Как это поможет, если удален предок на 10 уровней выше по иерархии?
4. На самом деле я сейчас не в своей среде разработки, поэтому не могу попробовать. Однако, если у вас есть какое-либо представление о том, почему такая вещь может работать, это было бы оценено. Я понимаю, что superview является свойством для прямого предка и что удаление вложенного представления из superview не приводит к автоматическому удалению всего поддерева, поэтому не должно быть причин, по которым superview вызовет событие изменения. Я могу ошибаться и попробую позже, но я очень сомневаюсь, что что-нибудь произойдет.
5. Да, вы правы. это сработает, если все супервизоры будут удалены.