1

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 は UIView IBOutlet です。

touchesEnded では、次のようにサブビューを削除しようとします。

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

何か案は?UIView であるビューの親に _invalidateSubviewCache を送信する必要があるようです。代わりに VC が呼び出される理由がわかりません。

アップデート:

gobanVC.view は gobanView の親です。IB を使用して子ビューを追加しました。gobanView は接続先の IBOutlet です。

4

1 に答える 1

0

とても興味深い。私は仮定していGobanVC.view == gobanViewますか?舞台裏で何か複雑なことが起こっているようです。拡大鏡が GobanVC への参照を取得する方法を理解するには、おそらく細かいコーミングが必要になるでしょう。gobanView には実際に gobanVC への参照が含まれているのでしょうか?

あなたがここでどのくらいのコードを表示するかはわかりませんが、可能であれば、他の人が見ることができるように、できるだけ多くの .m を表示してください. UIViewController ビューの読み込みのタイミングには直感的でない問題がいくつかあるため、すべてのコードを確認できると非常に役立ちます。

于 2010-08-26T19:55:06.517 に答える