2010-08-26 32 views
1

J'ai un contrôleur de vue appelé GobanVC. C'est l'ajout d'une sous-vue pour faire un effet de grossissement. Cela fonctionne très bien, mais quand je l'appelle removeSuperview pour se débarrasser de celui-ci, je reçois une erreur de sélection non reconnu:RemoveFromSuperview envoi sélecteur non reconnu pour afficher le contrôleur

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 est une sous-classe UIViewController, pas une vue, donc je ne sais pas pourquoi il est reçu ce message . J'ajoute la sous-vue comme ceci:

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

gobanView est une interface utilisateur UIView.

En touchesEnded j'essaie de supprimer le sous-vue comme celui-ci:

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

Toutes les idées? Il semble que _invalidateSubviewCache soit envoyé au parent de la vue, qui est un UIView. Je ne vois pas pourquoi le VC est appelé à la place.

Mise à jour:

gobanVC.view est le parent de gobanView. J'ai ajouté une vue enfant en utilisant IB, et gobanView est l'IBOutlet auquel elle est connectée.

Répondre

0

Assez intéressant. Je suppose GobanVC.view == gobanView? Il semble que quelque chose de compliqué se passe dans les coulisses, et il faudra probablement un bon peignage pour comprendre comment loupe pourrait éventuellement obtenir une référence à GobanVC. Peut-être que gobanView contient réellement une référence à un gobanVC? Je ne sais pas combien de code vous êtes prêt à montrer ici, mais si vous le pouvez, montrez autant de .m que possible afin que le reste d'entre nous puisse y jeter un coup d'œil. Il y a quelques problèmes non-intuitifs avec le timing dans le chargement de la vue UIViewController, donc avoir tout le code à regarder aide beaucoup.