2010-11-20 7 views
-1

View Controllerは、closeMenuという独自のビューでメソッドを呼び出しています。 closeMenuは以下のようにsuperViewからmenuというUIImageViewを削除し、それをnilに設定します。このメソッドは、ビュー内から呼び出されたときに機能しますが、ビューコントローラから呼び出されたときは機能しません。独自のView ControllerからViewのメソッドを呼び出すことはできません

メソッドを呼び出すと、ビューコントローラは、UIImageViewの 'menu'

ビューコントローラにスーパービューからメニューを削除し、それを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を使用せず、すべてをコーディングします。メニューはビュー内で初期化されていますが、View Controllerにはメニューは表示されません。上で編集してメニューのどこに表示するか – John

1

-closeMenuからどこに電話しても何の違いもありません。あなたのログステートメントがnullを出力した場合、あなたのメニュー変数はnullです。これは、あなたが '開いた'インスタンスを持っていないということを意味するのではなく、あなたのメニュー変数がそれを指していないということだけです。

あなたのコードのどこかでエラーが発生した場合に、なぜこのようなことが起こっているのかを誰かが理解できるように、コードをいくつか追加する必要があります。

+0

いいえ、ビュー内のボタンインスタンスに割り当てられても問題ありません。しかし、とにかく情報が追加されました。 – John

+0

メニュービューを作成したり読み込んだりするメッセージを受け取る前に、ビューが 'closeMenu'メッセージを受け取った場合、それは違いがあります。 –

+0

テスト用に2つのボタンがあります.1はコントローラからcloseMenuメソッドを送信し、もう1つのボタンはビューからメソッドを送信します。 Viewボタンはメニューをうまく閉じますが、View Controllerは表示されません。 ビューのヘッダーファイルに 'menu'があります – John

関連する問題