私はあまりにも多くのコードで先にこの質問をしました。View Controllerで設定されたデリゲートは、サブビュー内では維持されません。
ViewControllerは、ViewController内のController >> View >> SubViewのUIViewチェーンを初期化します。
aSubView.delegate = self;
NSLog(@"[email protected]",aSubview.delegate),
はViewControllerを返しますので、私はそれが設定されている知っている:サブビューが初期化された後のViewControllerは、そのデリゲートとして設定されています。
サブビューでは、NSLog(@"[email protected]",self.delegate),
は、このようなhr.lprojやファイルパスをランダムに返します。
デリゲートメソッドのいずれかを実装しようとするとクラッシュします。デリゲートはViewControllerにリンクせず、ランダム性を持つためです。
#import "TestDelegate.h"
@interface TestSubView : UIView {
id<TestDelegate> delegate;
}
@property (assign) id<TestDelegate> delegate;
EDIT:
この
はSubView.hファイルがどのように見えるかであるのViewControllerのようなアプリデリゲートに初期化されます:ViewController *controller = [[ViewController alloc] init];
[window addSubview:controller.view];
[controller release];
唯一の他の事は、私は、Appに追加しましたデリゲートはデフォルトでViewControllerヘッダーのインポートです
ビューコントローラがリリースされていれば、それはチェーンなので、他のものもそうだと思ってはいけません。サブビューは背景が赤色に設定されているからです。 –
しかし、ビューもウィンドウによって保持されますビューコントローラは解放され、ビューは保持されます。ビューコントローラを明示的に保持していますか?どのようにインスタンス化していますか? – grahamparks
初期化の方法に関する情報を追加しました。ありがとうございます。 –