Уведомление, когда представление предка удаляется из представления в iOS

#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. Да, вы правы. это сработает, если все супервизоры будут удалены.