简单案例。我想创建一个 UIViewController 来显示和响应一个简单的 UITextField 的输入。
- 我创建了一个包含xib文件的 UIViewController。
- 在 Interface Builder 中,我添加了一个View和一个包含UITextField。
- 文件的所有者设置为包含逻辑“CardViewController”的相应类名。
- 文件所有者指向视图作为视图。
- 文本字段使用File 's Owner作为delegate。
看起来像这样...
视图正在正确显示,但只要我点击文本字段,应用程序就会崩溃,并出现异常“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 中设置了委托。