2010-11-20 50 views
-1

我有一個視圖控制器在其自己的視圖中調用一個名爲closeMenu的方法。如下所示closeMenu從superView中移除一個名爲menu的UIImageView並將其設置爲nil。該方法在視圖內調用但在從視圖控制器調用時不起作用從其自己的視圖控制器調用視圖的方法,不工作

調用方法時,視圖控制器將UIImageView的「菜單」視爲零,即使它存在。

有關如何讓視圖控制器從超級視圖中刪除菜單並將其設置爲等於nil的任何想法?

視圖控制器:

 loadview { 
     View *mainView = [[View alloc] initWithFrame:CGRectMake(0,0,320,480)]; 
     self.view = mainView; 
     [mainView release]; 
    } 

//Call closeMenu in View 
[(View *)self.view closeMenu]; 

查看:

menu = [[UIImageView alloc] initWithImage:image]; 
[self addSubview:menu]; 

-(void)closeMenu { 
    NSLog(@"%@", menu); //Displays: (null), only when called by controller 
    if(menu != nil) { 
      [menu removeFromSuperview]; 
      self.menu = nil; 
    } 
} 

當我在視圖中創建一個按鈕實例與衝着closeMenu方法只是正常的動作。

回答

1

menu一個插座?如果是這樣,它是在IB連接?你是否將它的筆尖放在它的上面?

如果不是,您將分配給它在哪裏?控制器是否給出了它的菜單視圖?如果是這樣,那麼發生了嗎?如果視圖創建或加載自己的菜單視圖,有還沒有發生,如果有的話?

+0

不使用IB,編碼所有內容。菜單在視圖中初始化,在視圖控制器中沒有提及它。在上面編輯以顯示菜單init的位置 – John 2010-11-20 22:59:10

1

請確保'你在哪裏撥打-closeMenu從任何地方都沒有區別。如果您的日誌語句輸出爲空,那麼您的菜單變量爲空。這並不意味着你沒有'打開'實例 - 只是你的菜單變量沒有指向它。

您需要爲任何人發佈一些更多的代碼,以便弄清楚爲什麼會發生這種情況,因爲您在代碼中的其他位置有錯誤。

+0

不,它在分配給視圖中的按鈕實例時工作正常。但無論如何增加了信息。 – John 2010-11-20 22:10:31

+0

如果視圖在收到可能導致其創建或加載菜單視圖的消息之前收到closeMenu消息,它可能會有所不同。 – 2010-11-20 22:48:28

+0

有2個測試按鈕:1從控制器發送closeMenu方法,然後其他按鈕從視圖發送方法。查看按鈕關閉菜單很好,但視圖控制器沒有。 'menu'在視圖的頭文件中 – John 2010-11-20 22:52:17

相關問題