RemoveFromSuperview отправляет неопознанный селектор в контроллер просмотра

У меня есть контроллер представления под названием GobanVC. Он добавляет подвид для эффекта увеличения. Это работает нормально, но когда я вызываю removeSuperview, чтобы избавиться от него, я получаю нераспознанную ошибку селектора:

2010-08-26 10:10:04.014 GoGrinder[4257:207] -[GobanVC _invalidateSubviewCache]: unrecognized selector sent to instance 0x5a2f540
2010-08-26 10:10:04.016 GoGrinder[4257:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[GobanVC _invalidateSubviewCache]: unrecognized selector sent to instance 0x5a2f540'

GobanVC - это подкласс UIViewController, а не представление, поэтому я не уверен, почему он получает это сообщение. Я добавляю подпредставление следующим образом:

if(magnifier == nil)
{
    magnifier = [[MagnifierView alloc] initWithFrame:gobanView.bounds];
    magnifier.viewref = gobanView;
    [gobanView addSubview:magnifier];
}

gobanView - это IBOutlet UIView.

В touchesEnded я пытаюсь удалить подпредставление следующим образом:

if(magnifier != nil)
{
    [magnifier removeFromSuperview];
    [magnifier release];
    magnifier = nil;
}

Любые идеи? Похоже, что _invalidateSubviewCache должен быть отправлен родительскому элементу представления, который является UIView. Я не понимаю, почему вместо этого вызывается ВК.

Обновлять:

gobanVC.view является родительским элементом gobanView. Я добавил дочернее представление с помощью IB, а gobanView - это IBOutlet, к которому он подключен.


person TimK    schedule 26.08.2010    source источник


Ответы (1)


Довольно интересно. Я полагаю GobanVC.view == gobanView? Похоже, что за кулисами происходит что-то запутанное, и, вероятно, потребуется некоторое тщательное расчесывание, чтобы выяснить, как лупа может получить ссылку на GobanVC. Может быть, gobanView действительно содержит ссылку на gobanVC?

Я не знаю, сколько кода вы хотите показать здесь, но если можете, покажите как можно больше .m, чтобы остальные из нас могли посмотреть. Есть некоторые неинтуитивные проблемы с синхронизацией при загрузке представления UIViewController, поэтому наличие всего кода для просмотра очень помогает.

person David Liu    schedule 26.08.2010