シンプルなケース。単純なUITextFieldの入力を表示して反応するUIViewControllerを作成したいと思います。
- xibファイルを含むUIViewControllerを作成しました。
- Interface Builderで、ビューとそれを含むUITextFieldを追加しました。
- ファイルの所有者は、ロジック「CardViewController」を含む対応するクラス名に設定されます。
- ファイル所有者は、ビューとしてのビューを指します。
- テキストフィールドは、ファイルの所有者をデリゲートとして使用します。
こんな感じ…
ビューは正しく表示されていますが、テキストフィールドをタップするとすぐに、「EXC_BAD_ACCESS...」という例外が発生してアプリケーションがクラッシュします。
代理人の割り当てに問題があると思いますが、問題を見つけるのに問題があります。何か案が?私は何を取りこぼしたか?
さらなる調査結果。このビューコントローラをAppDelegateで直接インスタンス化すると、UITextFieldの委任が実際に機能します。!
しかし、最初に「BoardViewController」クラスのインスタンスを作成し、次に「CardViewController」オブジェクトを作成するために実際に行うことを計画しています。この種のネストがあると、委任は失敗します。
参考までに。私のアプリデリゲート:
BoardViewController *bvc = [[BoardViewController alloc] init];
[self.window setRootViewController:bvc];
ボードクラスには、CardViewControllersの作成をトリガーする「追加」ボタンがあります
-(void) addCard:(id)touchEvent{
NSLog(@"<Board> Add");
CardViewController *cvc = [[CardViewController alloc]init];
[self.view addSubview:cvc.view];
}
次に、CardViewControllerは最初に述べたように見え、委任はxibに設定されています。