【发布时间】:2013-01-06 11:32:36
【问题描述】:
简单案例。我想创建一个 UIViewController 来显示和响应一个简单的 UITextField 的输入。
- 我创建了一个包含 xib 文件的 UIViewController。
- 在 Interface Builder 中,我添加了一个 View 和一个包含 UITextField。
- 文件的所有者 设置为包含逻辑“CardViewController”的相应类名。
- 文件所有者指向视图作为视图。
- 文本字段使用文件的所有者作为委托。
看起来像这样……
视图正在正确显示,但只要我点击文本字段,应用程序就会崩溃并出现异常“EXC_BAD_ACCESS....”
我的猜测是委托的分配有问题,但我在查找问题时遇到了问题。任何的想法?我错过了什么?
进一步的发现。当我直接在 AppDelegate 中实例化此视图控制器时,UITextField 的委托实际上有效!!
但我实际上打算先创建一个“BoardViewController”类的实例,然后再创建“CardViewController”对象。这种嵌套会导致委托失败。
作为参考。在我的 App Delegate 中:
BoardViewController *bvc = [[BoardViewController alloc] init];
[self.window setRootViewController:bvc];
在 Board 类中,我有一个“添加”按钮,用于触发 CardViewControllers 的创建
-(void) addCard:(id)touchEvent{
NSLog(@"<Board> Add");
CardViewController *cvc = [[CardViewController alloc]init];
[self.view addSubview:cvc.view];
}
然后 CardViewController 看起来就像最初提到的那样,委托在 xib 中设置。
【问题讨论】:
-
是的。真的。谢谢。我在测试后忘记更改它以直接在 AppDelegate 中实例化 CardViewController。我更正了。
标签: objective-c ios delegates uitextfield uitextfielddelegate