Удаление представления из подпредставления не вызывает willRemoveSubview

У меня есть управляющий контроллер представления, который переключается на один из набора ранее выделенных контроллеров подчиненного представления, когда пользователь выбирает пункт меню.

Когда я переключаю контроллер представления, я подключаю представление управляющего контроллера представления к представлению в подчиненном контроллере представления.

[mvc.view addSubview:subvc.view];

Кажется, все работает нормально.

Однако при удалении этого представления контроллера подпредставления из иерархии представлений с помощью (например, при переключении страниц в приложении):

[subvc.view removeFromSuperview];

  • метод willRemoveSubview в пользовательском классе представления никогда не срабатывает. Я подтвердил, что когда я делаю вызов removeFromSuperview, я вызываю его для экземпляра моего пользовательского класса представления.

Однако другие методы в моем пользовательском классе представления срабатывают, например, viewWillMoveToWindow.

В справочном документе NSView говорится, что этот метод следует вызывать?

Кто-нибудь может подсказать, почему это не работает?

Я работаю на 10.8.2, компилирую для 10.7 с Xcode 4.5.2.

Спасибо

Даррен.


person Darren Wheatley    schedule 13.12.2012    source источник
comment
Вы переопределили какие-либо методы, изменяющие иерархию представлений, такие как -removeFromSuperview, -addSubview и т. д.?   -  person paulmelnikow    schedule 13.12.2012


Ответы (1)


willRemoveSubview:, как следует из названия, вызывается в суперпредставлении, а не в удаляемом подпредставлении.

person user1885297    schedule 13.12.2012
comment
Спасибо, я совершенно неправильно истолковал документ Apple. Теперь я поместил метод в класс клиента NSView в суперпредставлении, и все работает нормально. - person Darren Wheatley; 16.12.2012