2010-08-26 58 views
1

我有一個名爲GobanVC的視圖控制器。這是添加一個子視圖來做放大效果。這工作正常,但是當我打電話removeSuperview擺脫它,我得到一個無法識別的選擇錯誤:RemoveFromSuperview發送無法識別的選擇器到視圖控制器

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; 
} 

任何想法?看起來_invalidateSubviewCache應該被髮送到視圖的父級,這是一個UIView。我不明白爲什麼VC會被調用。

更新:

gobanVC.view是gobanView的父親。我使用IB添加了一個子視圖,而gobanView是它連接到的IBOutlet。

回答

0

很有意思。我假設GobanVC.view == gobanView?看起來似乎在幕後發生了一些令人費解的事情,並且可能需要仔細梳理才能弄清楚放大鏡可能如何得到GobanVC的參考。也許gobanView實際上包含對gobanVC的引用?

我不知道你願意在這裏展示多少代碼,但如果可以的話,展示儘可能多的.m,以便我們其他人可以看一看。在UIViewController視圖加載時有一些不直觀的問題,所以讓所有的代碼看起來很有幫助。

相關問題