コントローラA(CDCFaderController)からコントローラB(CDCSendsViewController)にデータを渡す方法を作成しようとしています。コントローラAはビューを所有していますが、アクセスしたいいくつかの追加機能があるので、データをコントローラBに表示します。デリゲート/プロトコルを正常に動作させる問題
私のロジックは、コントローラAでデリゲートをセットアップし、それをコントローラBで受信して使用することでした。
現在、私はそれが動作を取得するための試験としてこれを持っている:
コントローラーAの.h
@protocol CDCSendsControllerDelegate <NSObject>
-(void)test:(NSString*)str;
@end
@interface CDCFaderController : UIViewController
<UIScrollViewDelegate, CDCControlDelegate, CDCFadersSideBarDelegate>
@property (nonatomic, weak) id <CDCSendsControllerDelegate> delegate; // delegate synthesis
コントローラーA .M
-(void)delegateTest {
[self.delegate test:@"Hello world!"];
}
と受信コントローラBで:
コントローラB .h
@interface CDCSendsViewController : UIViewController
<CDCControlDelegate, CDCSendsControllerDelegate>
コントローラーB .mを
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"VDL CALLED");
CDCFaderController * faderController = [[CDCFaderController alloc] init];
faderController.delegate = self;
}
-(void) test:(NSString*)str{
NSLog(@"%@", str);
}
私が考えたアイデアは、私がコントローラーBをロードしたとき、それはコントローラAから印刷を通じて引き出して、情報を表示するであろうということでしたか?
コントローラAはビューの所有者であるため、実際にはコントローラBはビューによってインスタンス化されません。だから私はBをコールし、Aからのデータを正しく引き出してこれを動作させる方法を考えていましたか? Bは、渡されたデータの一部を使用してAにサポート機能を追加するバックグラウンドコントローラです。
これは私が詳細を提供するのに役立ちます。
あなたは委任をトリガーしていますか? –
これは問題の原因となる可能性があります。私はそれがコントローラBの負荷を見てトリガしたと仮定?コントローラAをインスタンス化し、デリゲートを自己に設定します。 – jcad
delegateTestはどこから呼び出していますか? – user3575114